Listing 1
<xs:schema xmlns:xs="http://www.
w3.org/2001/XMLSchema">
<xs:element name="items">
<xs:complexType>
<xs:sequence>
<xs:element ref="compact-
disc" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="compact-disc">
<xs:complexType>
<xs:sequence>
<xs:element name="price"
type="xs:decimal" />
<xs:element name="artist"
type="xs:string" />
<xs:element name="title"
type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Listing 2
using System;
using System.Xml;
public class Test{
public static void Main(string[] args){
string artist = null, title = null;
XmlTextReader reader = new XmlTextReader("test.xml");
/* move from root node to document element (items) */
reader.MoveToContent();
/* keep reading until we get to the first <artist> element */
while(reader.Read()){
if((reader.NodeType == XmlNodeType.Element) &&
reader.Name.Equals("artist")){
artist = reader.ReadElementString();
title = reader.ReadElementString();
break;
}
}
Console.WriteLine("Artist={0}, Title={1}", artist, title);
}
}
Listing 3
using System;
using System.Xml.XPath;
public class Test{
public static void Main(string[] args){
XPathDocument doc = new XPathDocument("test.xml");
XPathNavigator nav = doc.CreateNavigator();
nav.MoveToFirstChild(); //move from root node to document element (items)
nav.MoveToFirstChild(); //move from items element to first compact-disc element
//move from compact-disc element to artist element
nav.MoveToFirstChild();
nav.MoveToNext();
string artist = nav.Value;
//move from artist element to title element
nav.MoveToNext();
string title = nav.Value;
Console.WriteLine("Artist={0}, Title={1}", artist, title);
}
}
Listing 4
public static void DumpTree(XPathNavigator nav, bool descending){
if(descending){
DumpTreeHelper(nav);
if(nav.MoveToFirstChild()){
DumpTree(nav, true);
}else if(nav.MoveToNext()){
DumpTree(nav, true);
}else{
nav.MoveToParent();
DumpTree(nav, false);
}
}else{ //ascending
if(nav.MoveToNext()){
DumpTree(nav, true);
}else if( nav.MoveToParent()){
DumpTree(nav, false);
}else{
return;
}
}
}
public static void DumpTreeHelper(XPathNavigator nav){
switch(nav.NodeType){
case XPathNodeType.Element:
Console.WriteLine("Element: " + nav.Name);
while (nav.MoveToNextAttribute())
Console.WriteLine("Attribute: " + nav.Name + "='" + nav.Value + "'");
break;
case XPathNodeType.Text:
Console.WriteLine("Text: " + nav.Value);
break;
case XPathNodeType.ProcessingInstruction:
Console.WriteLine("Processing Instructions:" + "<?" + nav.Name + " " +
nav.Value + "?>");
break;
case XPathNodeType.Comment:
Console.WriteLine("Comment: <!--" + nav.Value + "-->");
break;
}
}
public static void DumpTree(XmlReader rdr)
{
//Read each node in the tree.
while (rdr.Read())
{
switch (rdr.NodeType)
{
case XmlNodeType.Element:
Console.WriteLine("Element: " + rdr.Name);
while (rdr.MoveToNextAttribute())
Console.WriteLine("Attribute: " + rdr.Name + "='" + rdr.Value + "'");
break;
case XmlNodeType.Text:
Console.WriteLine("Text: " + rdr.Value);
break;
case XmlNodeType.CDATA:
Console.WriteLine("CDATA: <![CDATA[" + rdr.Value + "]]>");
break;
case XmlNodeType.ProcessingInstruction:
Console.WriteLine("Processing Instructions:" + "<?" + rdr.Name + " " +
rdr.Value + "?>");
break;
case XmlNodeType.Comment:
Console.WriteLine("Comment: <!--" + rdr.Value + "-->");
break;
}
}
}
Listing 5
Element: items
Element: compact-disc
Element: price
Text: 16.95
Element: artist
Text: Nelly
Element: title
Text: Nellyville
Element: compact-disc
Element: price
Text: 17.55
Element: artist
Text: Baby D
Element: title
Text: Lil Chopper Toy
Element: items
Element: compact-disc
Element: price
Text: 16.95
Element: artist
Text: Nelly
Element: title
Text: Nellyville
Element: compact-disc
Element: price
Text: 17.55
Element: artist
Text: Baby D
Element: title
Text: Lil Chopper Toy
Listing 6
using System;
using System.Xml;
public class Test{
public static void Main(string[] args){
XmlDocument doc = new XmlDocument();
doc.Load("test.xml");
XmlElement firstCD = (XmlElement) doc.DocumentElement.FirstChild;
XmlElement artist =
(XmlElement) firstCD.GetElementsByTagName("artist")[0];
XmlElement title =
(XmlElement) firstCD.GetElementsByTagName("title")[0]
Console.WriteLine("Artist={0}, Title={1}", artist.InnerText, title.InnerText);
}
}
Listing 7
using System;
using System.Xml.XPath;
public class Test{
public static void Main(string[] args){
XPathDocument doc = new XPathDocument("test.xml");
XPathNavigator nav = doc.CreateNavigator();
XPathNodeIterator iterator = nav.Select("/items/compact-disc[1]/artist |
/items/compact-disc[1]/title");
iterator.MoveNext();
Console.WriteLine("Artist={0}", iterator.Current.Value);
iterator.MoveNext();
Console.WriteLine("Title={0}", iterator.Current.Value);
}
}