7 Stimmen

Irgendeine Möglichkeit, XmlSerializer Ausgabe Xml in einer bestimmten Reihenfolge zu machen?

Derzeit verwende ich XmlSerializer zum Serialisieren und Deserialisieren eines Objekts. Die Xml wird in einer undefinierten Reihenfolge generiert, die verständlich ist, aber macht es ärgerlich, wenn Versionen des Objekts zu vergleichen, da die Reihenfolge der Eigenschaften jedes Mal anders ist. So kann ich zum Beispiel ein normales Diff-Tool nicht verwenden, um Unterschiede zu sehen.

Gibt es eine einfache Möglichkeit, meine Xml in der gleichen Reihenfolge jedes Mal zu generieren, ohne die ReadXml und WriteXml Methoden selbst zu schreiben? Ich habe eine Menge von Eigenschaften auf die Klasse, und fügen Sie neue hin und wieder, so würde es vorziehen, nicht zu haben, zu schreiben und dann pflegen, dass Code.

(C# .net 2.0)

10voto

Szymon Rozga Punkte 17510

Das Attribut XmlElement hat eine Eigenschaft bestellen . Sie können das als Ausgangspunkt nehmen.

Wenn Sie den Unterschied in Xml-Dateien finden müssen, sollten Sie einen Blick auf este .

2voto

bdukes Punkte 144019

Dekorieren Sie Ihre Eigenschaften mit dem XmlElementAttribut , die Einstellung der Bestellung Parameter.

0voto

Cheeso Punkte 184210

Ps: Ich glaube nicht, dass das vom XmlSerializer erzeugte XML in einer undefinierten Reihenfolge ist. Es mag undokumentiert sein, aber es ist bekannt. Ich glaube, dass der XmlSerializer in Ermangelung von Order-Attributen alle öffentlichen Eigenschaften, alpha-sortiert nach Prop-Namen, und dann alle öffentlichen Felder, alpha-sortiert nach Namen, serialisiert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X