有没有办法让XmlSerializer以定义的顺序输出xml?

目前我正在使用XmlSerializer来序列化和反序列化一个对象。 xml以未定义的顺序生成,这是可以理解的,但在比较对象的版本时会使其烦人,因为每次属性的顺序都不同。 因此,例如我不能使用普通的差异工具来查看任何差异。

有没有一种简单的方法可以每次以相同的顺序生成我的xml,而无需自己编写ReadXml和WriteXml方法? 我在类上有很多属性,并且不时地添加新的属性,所以宁愿不必编写然后维护该代码。

(C#.net 2.0)

XmlElement属性具有order属性 。 你可以用它作为开始。

如果你需要在Xml文件中找到diff,你可能想看看这个 。

使用XmlElementAttribute装饰属性,设置Order参数。

ps:我不相信XmlSerializer生成的XML处于未定义的顺序。 它可能没有记录,但它是已知的。 我相信在没有Order属性的情况下,XmlSerializer会序列化所有公共属性,按照名称排序alpha,然后按名称排序所有公共字段。