2012-06-18 24 views
0

這是我的xml現在。可以添加新的「項目」節點,我希望所有節點按類別ID排序。保存按屬性排序的Xml節點

<?xml version="1.0" encoding="utf-8"?> 
<data> 
    <banners> 
    <banner type="search-bar"> 
     <item img="http://site.com/3ac0a.png" id="5df129a6-1" categoryid="7" /> 
     <item img="http://site.com/3ac1a.png" id="5df129a6-1" categoryid="10" /> 
     <item img="http://site.com/3ac2a.png" id="dfgsdfgg-1" categoryid="1" /> 
     <item img="http://site.com/3ac3a.png" id="5erjrthr-1" categoryid="2" /> 
     <item img="http://site.com/3ac4a.png" id="yuj67445-1" categoryid="3" /> 
     <item img="http://site.com/3ac5a.png" id="ghjmdmgh-1" categoryid="4" /> 
    </banner> 
    </banners> 
</data> 

像這樣

<?xml version="1.0" encoding="utf-8"?> 
<data> 
    <banners> 
    <banner type="search-bar"> 
     <item img="http://site.com/3ac2a.png" id="dfgsdfgg-1" categoryid="1" /> 
     <item img="http://site.com/3ac3a.png" id="5erjrthr-1" categoryid="2" /> 
     <item img="http://site.com/3ac4a.png" id="yuj67445-1" categoryid="3" /> 
     <item img="http://site.com/3ac5a.png" id="ghjmdmgh-1" categoryid="4" /> 
     <item img="http://site.com/3ac0a.png" id="5df129a6-1" categoryid="7" /> 
     <item img="http://site.com/3ac1a.png" id="5df129a6-1" categoryid="10" /> 
    </banner> 
    </banners> 
</data> 

我需要排序XML被保存

+0

遵循這一http://stackoverflow.com/questions/2699452/ xelement屬性排序 –

回答

1
XElement El = XElement.Load(FilePath); 
El.Descendants("banner").Where(b => b.Attribute("type").Value == "search-bar").First().ReplaceNodes(
       El.Descendants("banner").Where(b => b.Attribute("type").Value == "search-bar").First().Descendants("item").OrderBy(o => int.Parse(o.Attribute("categoryid").Value))); 
      El.Save(FilePath); 
2
XDocument document = XDocument.Parse(xml); 
var items = document.Root.Elements("item"); 
foreach (var item in items) 
{ 
    var elements = item.Elements("item").OrderBy(a => a.Attribute("categoryid").Value).ToArray(); 
    item.Elements().Remove(); 
    item.Add(elements); 
} 

document.Save("your sorted xml path, which you want to save"); 
+0

我想排序ite ms將被保存爲XML – levi

+0

@levanlevi可以使用linq嗎?我的意思是你使用哪個框架?我有解決方案,它使用LINQ到xml – Talha

+0

我可以。我正在使用4.0 \ – levi