读书人

怎么 xml 排序后取其中的指定位置

发布时间: 2012-02-06 15:52:45 作者: rapoo

如何 xml 排序后取其中的指定位置范的
如何 xml 排序后取其中的指定位置范的比如以下xml,
<root><row><aaa>111</aaa><bbb>b1</bbb></row>
<row><aaa>bbb</aaa><bbb>b2</bbb></row>
<row><aaa>333</aaa><bbb>b3</bbb></row>
<row><aaa>aaa</aaa><bbb>b4</bbb></row>
<row><aaa>222</aaa><bbb>b5</bbb></row>
<row><aaa>ddd</aaa><bbb>b6</bbb></row>
<row><aaa>ccc</aaa><bbb>b7</bbb></row>
......(row不固定可能有几百或几千)
</root>
我需要按 aaa 排序后取得第3-5果如下
<root><row><aaa>111</aaa><bbb>b1</bbb></row>
<row><aaa>222</aaa><bbb>b5</bbb></row>
<row><aaa>333</aaa><bbb>b3</bbb></row>
<row><aaa>aaa</aaa><bbb>b4</bbb></row>
<row><aaa>bbb</aaa><bbb>b2</bbb></row>
<row><aaa>ccc</aaa><bbb>b7</bbb></row>
<row><aaa>ddd</aaa><bbb>b6</bbb></row>
</root>


[解决办法]

C# code
        string xml = @"<root>  <row><aaa>111</aaa><bbb>b1</bbb></row>  <row><aaa>bbb</aaa><bbb>b2</bbb></row>  <row><aaa>333</aaa><bbb>b3</bbb></row>  <row><aaa>aaa</aaa><bbb>b4</bbb></row>  <row><aaa>222</aaa><bbb>b5</bbb></row>  <row><aaa>ddd</aaa><bbb>b6</bbb></row>  <row><aaa>ccc</aaa><bbb>b7</bbb></row></root>";        DataSet ds = new DataSet();        Stream s = new MemoryStream(System.Text.Encoding.Default.GetBytes(xml));        ds.ReadXml(s);        DataSet dt = ds.Clone();        ds.Tables[0].Select().OrderBy(r => r["aaa"]).Skip(2).Take(3).ToList().ForEach(n => dt.Tables[0].ImportRow(n));        Stream ns = new MemoryStream();        dt.WriteXml(ns);        ns.Seek(0, SeekOrigin.Begin);        XmlDocument doc = new XmlDocument();        doc.Load(ns);        Response.Write(doc.OuterXml); 

读书人网 >XML SOAP

热点推荐