我有一个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>
提前致谢
答案 0 :(得分:0)
使用OrderBy
和ReplaceNodes
:
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");