Parsing an XML Stream
Of course, simply reading and writing XML in this form, while of some
use, is somewhat limiting. Much of XML’s attraction is in its ability
to provide structure over data; using XmlReader
“in
the raw,” however, hides the very hierarchical structure XML imposes.
In many cases, XML data is best viewed as an arranged tree of data, complete
with the XML structuring elements (the tags and attributes surrounding the
data) found within it.
Fortunately, the .NET XML architecture supports such a view, using the XmlDocument
class
to model the entire XML document itself. To see the hierarchical structure
in an XML document, you must first pass the XML into the XmlDocument
instance
for parsing:
XmlDocument doc = new XmlDocument(); doc.Load(new XmlReader( ));
Alternatively, you can use LoadXml
to parse an arbitrary
string instance.
Once the XmlDocument
is populated with data,
the document’s document element can be obtained from the XmlDocument
instance
via the DocumentElement
property. From there, it is a simple matter to walk
the various child nodes, all the way to the elements of interest:
XmlNode docNode = doc.DocumentElement; //print out all the first-level children foreach (XmlNode n in docNode.ChildNodes) System.Console.WriteLine(n.Name);
At this point, navigation becomes an exercise in using the various properties
and methods on XmlNode
. The Attributes
property returns
an XmlAttributeCollection
containing the attributes (if
any) on this node, the ChildNodes
property (shown ...
Get C# in a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.