排序Xml的属性

SMD*_*SMD 7 c# xml

我的输入就像吹Xml一样:

<Phrase Entry="ID">
 <Ans number="1">
  <Identification LastName="Bornery" Name="John" Age="23"/>
 </Ans>
</Phrase>
Run Code Online (Sandbox Code Playgroud)

我想基于字母排列的第一个字符名称顺序对Xml属性进行排序,例如吹扫Xml:

<Phrase Entry="ID">
 <Ans number="1">
  <Identification Age="23" LastName="Bornery" Name="John" />
 </Ans>
</Phrase>
Run Code Online (Sandbox Code Playgroud)

谢谢.

Muh*_*han 11

您的输出xml是错误的,但如果输入是这样的:

<Phrase Entry="ID">
 <Ans number="1">
  <Blah LastName="Bornery" Name="John" Age="23"/>
 </Ans>
</Phrase>
Run Code Online (Sandbox Code Playgroud)

然后是以下代码

static string SortAttributes(string xml)
{
    var doc = XDocument.Parse(xml);
    foreach (XElement element in doc.Descendants())
    {
        var attrs = element.Attributes().ToList();
        attrs.Remove();
        attrs.Sort((a, b) => a.Name.LocalName.CompareTo(b.Name.LocalName));
        element.Add(attrs);
    }
    xml = doc.ToString();
    return xml;
}
Run Code Online (Sandbox Code Playgroud)

会回来的

<Phrase Entry="ID">
  <Ans number="1">
    <Blah Age="23" LastName="Bornery" Name="John" />
  </Ans>
</Phrase>
Run Code Online (Sandbox Code Playgroud)