diff --git a/src/ExtendedXmlSerializer/ExtensionModel/Xml/XmlContent.cs b/src/ExtendedXmlSerializer/ExtensionModel/Xml/XmlContent.cs index deb3ec47..954d4a17 100644 --- a/src/ExtendedXmlSerializer/ExtensionModel/Xml/XmlContent.cs +++ b/src/ExtendedXmlSerializer/ExtensionModel/Xml/XmlContent.cs @@ -15,10 +15,12 @@ public bool MoveNext() { var attributes = _attributes; var content = _elements; - var result = (attributes?.MoveNext() ?? false) || (content?.MoveNext() ?? false); - return result; + return content?.IsEmpty() ?? false ? (bool)content?.MoveNext() : Next(in attributes, in content); } + static bool Next(in XmlAttributes? attributes, in XmlElements? content) + => (attributes?.MoveNext() ?? false) || (content?.MoveNext() ?? false); + public object Current => null; } } \ No newline at end of file diff --git a/src/ExtendedXmlSerializer/ExtensionModel/Xml/XmlElements.cs b/src/ExtendedXmlSerializer/ExtensionModel/Xml/XmlElements.cs index 712df7f9..cd731111 100644 --- a/src/ExtendedXmlSerializer/ExtensionModel/Xml/XmlElements.cs +++ b/src/ExtendedXmlSerializer/ExtensionModel/Xml/XmlElements.cs @@ -14,5 +14,7 @@ public XmlElements(System.Xml.XmlReader reader, int depth) public bool MoveNext() => _reader.Read() && _reader.IsStartElement() && _reader.Depth == _depth; public object Current => _reader; + + public bool IsEmpty() => _reader.IsEmptyElement; } } \ No newline at end of file