Pregunta

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 al comparar versiones del objeto, ya que el orden de las propiedades es diferente cada vez. Por ejemplo, no puedo usar una herramienta de diferencias normal para ver las diferencias.

¿Existe una 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, así que preferiría no tener que escribir y mantener ese código.

(C # .net 2.0)

¿Fue útil?

Solución

El atributo XmlElement tiene un ordenar propiedad . Puedes usar eso como un comienzo.

Si necesita encontrar la diferencia en los archivos Xml, puede echar un vistazo a this .

Otros consejos

Decora tus propiedades con el XmlElementAttribute , configurando el parámetro Orden .

ps: no creo que el XML generado por el XmlSerializer esté en un orden indefinido. Puede ser indocumentado, pero es conocido. Creo que en ausencia de atributos de Orden, el XmlSerializer serializa todas las Propiedades públicas, ordenadas por orden alfabético por nombre de propiedad, y luego todos los Campos públicos, ordenados por orden alfabética.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top