按字母顺序按属性值对XML文件进行排序

时间:2016-09-21 08:43:59

标签: c# xml linq

我有一个XML文件,并希望按照M1字母中的属性“name”对其进行排序,如下所示 如果可以通过linq完成,那将会很棒。

输入:

<M1>
    <Class name="Class1">
        <M1 name="ZZAA" description="This is Last" value="0" />
        <M1 name="AABB" description="This should be first" value="3" />
        <M1 name="ACAB" description="This should be second" value="1" />
        <M1 name="ZFAA" description="This should be not here" value="32" />
    </Class>
</M1>

输出应该是这样的:

<M1>
    <Class name="Class1">
        <M1 name="AABB" description="This should be first" value="3" />
        <M1 name="ACAB" description="This should be second" value="1" />
        <M1 name="ZFAA" description="This should be not here" value="32" />
        <M1 name="ZZAA" description="This is Last" value="0" />
    </Class>
</M1>

提前致谢

1 个答案:

答案 0 :(得分:0)

使用OrderByReplaceNodes

        XDocument doc = XDocument.Load("input.xml");
        doc.Root.Element("Class").ReplaceNodes(doc.Root.Element("Class").Elements("M1").OrderBy(m => (string)m.Attribute("name")));
        doc.Save("output.xml");