2011-10-22 51 views
7
的屬性

我的輸入是一個如自爆XML:排序的Xml

<Phrase Entry="ID"> 
<Ans number="1"> 
    <Identification LastName="Bornery" Name="John" Age="23"/> 
</Ans> 
</Phrase> 

,我要排序的通過XML 字母佈局研究他們的第一個字符的名稱順序屬性基地等自爆XML:

<Phrase Entry="ID"> 
<Ans number="1"> 
    <Identification Age="23" LastName="Bornery" Name="John" /> 
</Ans> 
</Phrase> 

謝謝。

+2

'LastName'不是屬性。它是一個元素名稱。你的XML有一個錯誤的語法。 –

+0

哦,是的,謝謝你的註釋。 – SMD

+2

你爲什麼要這樣做?屬性順序對於任何兼容的解析器來說都是不重要的... –

回答

9

你的輸出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> 
0

XML文檔作爲字符串,您應該將它們轉換爲Canonical XML。這涉及到的不僅僅是將屬性轉化爲規範的順序:例如,它涉及規範化空白和可能的命名空間前綴。尋找一個XML規範化實用程序。