C# 保存按属性排序的Xml节点
这是我现在的xml。可以添加新的“item”节点,我希望所有节点都按categoryid排序C# 保存按属性排序的Xml节点,c#,asp.net,.net,xml,sorting,C#,Asp.net,.net,Xml,Sorting,这是我现在的xml。可以添加新的“item”节点,我希望所有节点都按categoryid排序 <?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" />
<?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遵循此操作遵循此操作我希望将已排序的项目保存到XML@levanlevi你能用linq吗?我是说你在用哪个框架?我有一个使用linq到xmlI的解决方案,我想将已排序的项保存到XML@levanlevi你能用linq吗?我是说你在用哪个框架?我有一个使用linq到xml的解决方案
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");
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);