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

时间:2009-03-04 19:51:08

标签: c# .net xml xml-serialization

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

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

(C#.net 2.0)

3 个答案:

答案 0 :(得分:9)

XmlElement属性有order property。您可以将其作为一个开始。

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

答案 1 :(得分:2)

使用XmlElementAttribute装饰您的媒体资源,设置Order参数。

答案 2 :(得分:0)

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