2009-03-04 8 views
6

Attualmente sto usando XmlSerializer per serializzare e deserializzare un oggetto. L'xml viene generato in un ordine non definito che è comprensibile ma lo rende fastidioso quando si confrontano le versioni dell'oggetto, poiché l'ordine delle proprietà è diverso ogni volta. Quindi, ad esempio, non posso usare uno strumento diff normale per vedere eventuali differenze.Un modo per rendere XmlSerializer in output xml in un ordine definito?

C'è un modo semplice per generare il mio xml nello stesso ordine ogni volta, senza scrivere da solo i metodi ReadXml e WriteXml? Ho molte proprietà sulla classe e ne aggiungo di nuove ogni tanto, quindi preferirei non dover scrivere e quindi mantenere quel codice.

(C# .NET 2,0)

+0

È possibile fornire un esempio che riproduca questo "ordine non definito"? Non l'ho mai visto accadere, e non vedo come il Serializer XML sarebbe in grado di deserializzare il risultato se ciò accadesse. –

risposta

9

L'attributo XmlElement ha un order property. Puoi usarlo come inizio.

Se è necessario trovare il diff in file Xml, è possibile dare un'occhiata a this.

0

ps: Non credo che l'XML generato da XmlSerializer sia in un ordine indefinito. Potrebbe non essere documentato, ma è noto. Credo che in assenza di attributi Order, XmlSerializer serializzi tutte le proprietà pubbliche, alfa-ordinate per nome prop e quindi tutti i campi pubblici, alfa-ordinati per nome.