Xml的排序属性
本文关键字:属性 排序 Xml | 更新日期: 2023-09-27 18:12:10
我的输入就像吹过的Xml:
<Phrase Entry="ID">
<Ans number="1">
<Identification LastName="Bornery" Name="John" Age="23"/>
</Ans>
</Phrase>
,我想根据它们的第一个字符名称顺序对Xml属性进行排序按字母顺序排列,例如:
<Phrase Entry="ID">
<Ans number="1">
<Identification Age="23" LastName="Bornery" Name="John" />
</Ans>
</Phrase>
谢谢。
您的输出xml是错误的,但如果输入是这样的:
<Phrase Entry="ID">
<Ans number="1">
<Blah LastName="Bornery" Name="John" Age="23"/>
</Ans>
</Phrase>
那么下面的代码
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;
}
将返回这个
<Phrase Entry="ID">
<Ans number="1">
<Blah Age="23" LastName="Bornery" Name="John" />
</Ans>
</Phrase>
如果希望将两个XML文档作为字符串进行比较,则应该将它们转换为规范XML。这涉及到的不仅仅是将属性转换为规范顺序:它还涉及到,例如,规范化空白和名称空间前缀。寻找XML规范化实用程序