如何對 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>
[解决办法]
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);