8.2 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 in the previous code snippet) returns an
XmlNodeList instance containing the child nodes of
this node, and the Name and
Value properties return various information
depending on the current node's type.
|