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

本文关键字:排序 XML 文件 顺序 属性 | 更新日期: 2023-09-27 18:08:15

我得到了一个XML文件,并希望通过属性"name"按M1字母顺序排序,如下所示如果可以用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>

Thanks in advance

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

使用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");