2014-04-23 26 views
0

我比較2點的對象(任何,但兩者相同,型)他們兩個序列化到XML和使用比較.NET的XmlSerializer類的字符串。假設每個屬性的所有值在兩個對象中都是相同的,輸出字符串是否保證相同?或者是否有可能在輸出中屬性的順序不總是相同的(對於相同的對象類型,大約在同一時間序列化)?威爾XmlSerializer的總是輸出相同的字符串對於具有相同值的相同類型的任意2個不同的對象?

換句話說,可以在輸出最終會是這樣的:
"...<SomeProperty>1</SomeProperty><OtherProperty>abc</OtherProperty>..."

"...<OtherProperty>abc</OtherProperty><SomeProperty>1</SomeProperty>..."

我知道屬性可以用來指定正是爲了在序列化的屬性,而是因爲這個比較正在對(相同)任意類型的2個對象進行,這些屬性可能不會在那裏。

我假設的輸出格式將是任何給定類型一致,即使沒有預見或明確的排序屬性控制,但我似乎無法找到類文檔中的任何官方的確認。

+2

XML是由定義無序,所以我不會假定以相同的順序XmlSerializer的_always_輸出特性。你也可能遇到空白區別。我會選擇一種比較兩個通用對象的不同方法。 –

+0

@丹斯利 - 它不是那麼簡單。 XML工具確實支持各種級別的文檔訂單。這裏更重要的是串行器在這方面是否可能是非確定性的。在理論上儘可能實際但很難想象。 –

回答

2

我在單元測試期間在DataContractSerializer中使用這個技巧,並且還沒有發現它不是同一個順序的情況,儘管在理論上它可以以不同的順序排出,但在實踐中我從未見過它。

相關問題