按子节点文本排序xml节点

时间:2015-01-25 19:16:59

标签: c# xml

我整个周末都在搜索,但是没有找到任何结果,我正在寻找一个程序或C#代码,我选择一个文件,我可以选择一个节点,我想要的子节点要订购的母节点,

<SelectedProfile>
    <Name>Default</Name>
    <InstalledAssemblies>
        <LeagueSharpAssembly>
            <InstallChecked>true</InstallChecked>
            <InjectChecked>true</InjectChecked>
            <Status>Ready</Status>
            <DisplayName>Library - Common</DisplayName>
        </LeagueSharpAssembly>
    </InstalledAssemblies>
</SelectedProfile>

我想选择“LeagueSharpAssembly”,并通过“DisplayName”命令所有“LeagueSharpAssembly”

你们有什么了解的吗?

2 个答案:

答案 0 :(得分:3)

使用Linq to XML

var result = x.Descendants("LeagueSharpAssembly")
        .OrderBy(r => r.Descendants("DisplayName").Single().Value);

这个答案有效,但我首先误读了这个问题,所以查询应该是:

var result=x.Descendants("LeagueSharpAssembly")
           .OrderBy(r=>r.Element("DisplayName").Value);

这是由@RichardSchneider首先发布的,所以如果你要使用Linq to XML,他的答案应该被接受。

答案 1 :(得分:1)

您可以使用Linq和XML来选择和排序元素,然后使用简单的foearch来处理它们。

var doc = XDocument.Load("...");
var assemblies = doc.Descendants("LeagueSharpAssembly")
    .OrderBy(r => r.Element("DisplayName").Value);
foreach (var a in assemblies)
{
    Console.WriteLine("Assembly {0}", a.DisplayName);
}