2009-03-04 58 views
6

目前我使用XmlSerializer來序列化和反序列化一個對象。 xml以未定義的順序生成,這是可以理解的,但在比較對象的版本時會使其變得煩人,因爲每次屬性的順序都不相同。因此,例如我不能使用普通的差異工具來查看任何差異。任何方式使XmlSerializer輸出XML按照定義的順序?

是否有一種簡單的方法可以在每次都以相同順序生成我的xml,而無需自己編寫ReadXml和WriteXml方法?我在這個類上有很多屬性,並且每次都添加新的屬性,因此寧願不必編寫並維護該代碼。

(C#的.NET 2.0)

+0

你能舉一個例子來重現這個「未定義的順序」嗎?我從來沒有見過這種情況發生,而且我也沒有看到XML序列化器如果能夠將結果反序列化,那麼結果如何。 – 2009-07-28 21:17:11

回答

9

的的XmlElement屬性具有order property。你可以用它作爲開始。

如果您需要在Xml文件中找到差異,您可能需要查看this

0

ps:我不相信XmlSerializer生成的XML是未定義的順序。它可能是無證的,但它是已知的。我相信,在沒有Order屬性的情況下,XmlSerializer將序列化所有公共屬性,按照prop名稱進行alpha排序,然後對所有公共字段進行序列化,然後按名稱進行alpha排序。

相關問題