using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.XPath;
namespace ConsoleTestApp001
{
class Program
{
static void Main(string[] args)
{
string xml = @"<?xml version='1.0'?>
<folder id='A' type='none'>
<fields>
<field name='title'>Root</field>
<field name='group'>z</field>
</fields>
<folder id='A3' type='book'>
<fields>
<field name='title'>c</field>
<field name='group'>G-c</field>
</fields>
</folder>
<folder id='A2' type='music'>
<fields>
<field name='title'>b</field>
<field name='group'>G-b</field>
</fields>
</folder>
<folder id='A1' type='image'>
<fields>
<field name='title'>a</field>
<field name='group'>G-a</field>
</fields>
</folder>
</folder>";
XmlTextReader reader = new XmlTextReader(new System.IO.StringReader(xml));
reader.Read();
XPathDocument doc = new XPathDocument(reader);
XPathNavigator nav = doc.CreateNavigator();
//Select all books by Jane Austen.
XPathExpression expr;
expr = nav.Compile("/folder/folder");
//Sort the selected books by title.
expr.AddSort("fields/field[@name='title']", XmlSortOrder.Ascending, XmlCaseOrder.None, "", XmlDataType.Text);
//Display the selection.
XPathNodeIterator iterator = nav.Select(expr);
while (iterator.MoveNext())
{
XPathNavigator nav2 = iterator.Current.Clone();
string id = nav2.GetAttribute("id", "");
string type = nav2.GetAttribute("type", "");
XPathNavigator nav3 = nav2.SelectSingleNode("fields/field[@name='title']");
Console.WriteLine("id:{0}; type:{1}; title:{2}", id, type, nav3.Value);
}
Console.Read();
}
}
}