Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.4k views
in Technique[技术] by (71.8m points)

c# - Sorting of XML file by XMLElement's InnerText

Please have a look at the XML file. I would like to sort the XML file by <Order> tag

<MyRootNode>
  <Tab>
    <Name>ABC</Name>
    <Order>200</Order>
  </Tab>
  <Tab>
    <Name>MNO</Name>
    <Order>100</Order>
  </Tab>
  <Tab>
    <Name>XYZ</Name>
    <Order>90</Order>
  </Tab>
  <Tab>
    <Name>QWE</Name>
    <Order>40</Order>
  </Tab>
  <Tab>
    <Name>KML</Name>
    <Order>20</Order>
  </Tab>
</MyRootNode>

So the answer will be the following.

<MyRootNode>
  <Tab>
    <Name>KML</Name>
    <Order>20</Order>
  </Tab>
  <Tab>
    <Name>QWE</Name>
    <Order>40</Order>
  </Tab>
  <Tab>
    <Name>XYZ</Name>
    <Order>90</Order>
  </Tab>
  <Tab>
    <Name>MNO</Name>
    <Order>100</Order>
  </Tab>
  <Tab>
    <Name>ABC</Name>
    <Order>200</Order>
  </Tab>
</MyRootNode>

How can I do it in C# 3.5 ?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Have you tried,

XElement root = XElement.Load(xmlfile);
var orderedtabs = root.Elements("Tab")
                      .OrderBy(xtab => (int)xtab.Element("Order"))
                      .ToArray();
root.RemoveAll();
foreach(XElement tab in orderedtabs)
    root.Add(tab);
root.Save(xmlfile);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...