2009-03-04 15 views
6

Actualmente estoy usando XmlSerializer para serializar y deserializar un objeto. El xml se genera en un orden indefinido que es comprensible pero lo hace molesto cuando se comparan versiones del objeto, ya que el orden de las propiedades es diferente cada vez. Entonces, por ejemplo, no puedo usar una herramienta de diferencias normal para ver las diferencias.¿Alguna forma de hacer que XmlSerializer produzca xml en un orden definido?

¿Existe alguna manera fácil de generar mi xml en el mismo orden cada vez, sin escribir los métodos ReadXml y WriteXml por mi cuenta? Tengo muchas propiedades en la clase y agrego nuevas de vez en cuando, por lo que preferiría no tener que escribir y luego mantener ese código.

(C# .NET 2,0)

+0

¿Puede proporcionar un ejemplo que reproduzca este "orden indefinido"? Nunca lo he visto suceder, y no veo cómo el Serializador XML podría deserializar el resultado si sucediera. –

Respuesta

9

El atributo XmlElement tiene un order property. Puedes usar eso como un comienzo.

Si necesita encontrar el diff en archivos Xml, es posible que desee echar un vistazo a this.

0

ps: No creo que el XML generado por el XmlSerializer esté en un orden indefinido. Puede estar indocumentado, pero se sabe. Creo que, en ausencia de atributos de orden, el XmlSerializer serializa todas las propiedades públicas, ordenadas alfa por nombre de utilería y luego todos los campos públicos ordenados alfa por nombre.

Cuestiones relacionadas