XmlReader - Self-closing element does not fire a EndElement event?
20,731
No, you check it by looking at XmlReader.IsEmptyElement.
In the docs for that property:
A corresponding EndElement node is not generated for empty elements.
Author by
Vincent
Updated on July 09, 2022Comments
-
Vincent almost 2 years
I am using XmlReader in .NET to parse an XML file using a loop:
while (xml.Read()) { switch xml.NodeType { case XmlNodeType.Element: //Do something case XmlNodeType.Text: //Do something case XmlNodeType.EndElement: //Do something } }
I was wondering if it was normal that the following XML code does not produce some EndElement nodes? Please note the missing space before the /> but I don't think that's the problem.
<date month="November" year="2001"/> <zone name="xml"/>
Is there a different NodeType or property to indicate a self-closing element?
-
Brian Warshaw over 7 yearsHow would I tell the difference between
<element />
and<element></element>
when my currentNodeType
isStartElement
?IsEmptyElement
istrue
for both scenarios. -
Jon Skeet over 7 years@BrianWarshaw: You'd see whether an
EndElement
node is present, basically... I don't know any way of doing it immediately when you're on theStartElement
. -
Brian Warshaw over 7 yearsThanks--turns out I may have been wrong about
IsEmptyElement
being true in those cases. I've been staring at this output for too long :-)