您的位置:首页 > 编程语言

使用XPathExpression的AddSort方法获得排序的Xml解析结果的代码

2014-02-13 23:39 651 查看
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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐