【问题标题】:Save Xml Nodes Ordered by its Attribute保存按属性排序的 Xml 节点
【发布时间】:2012-06-18 09:33:14
【问题描述】:

这是我现在的 xml。可以添加新的“项目”节点,我希望所有节点都按类别 ID 排序。

<?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

【问题讨论】:

标签: c# asp.net .net xml sorting


【解决方案1】:
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");

【讨论】:

  • 我想将排序的项目保存到 XML 中
  • @levanlevi 你可以使用 linq 吗?我的意思是你使用哪个框架?我有使用 linq to xml 的解决方案
【解决方案2】:
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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多