2009-03-04 7 views
6

Obecnie używam XmlSerializer do serializacji i deserializacji obiektu. Plik XML jest generowany w niezdefiniowanej kolejności, co jest zrozumiałe, ale powoduje irytujące przy porównywaniu wersji obiektu, ponieważ kolejność właściwości jest za każdym razem inna. Więc na przykład nie mogę użyć zwykłego narzędzia do porównywania, aby zobaczyć różnice.Jakikolwiek sposób, aby XmlSerializer wyjściowy xml w określonej kolejności?

Czy istnieje łatwy sposób generowania mojego xml w tej samej kolejności za każdym razem, bez pisania metod ReadXml i WriteXml? Mam wiele właściwości na klasie i dodam nowe od czasu do czasu, więc wolałbym nie pisać i utrzymywać ten kod.

(C# NET 2,0)

+0

Czy możesz podać przykład odtwarzający tę "niezdefiniowaną kolejność"? Nigdy nie widziałem, aby to się stało, i nie widzę, jak XML Serializer byłby w stanie deserializować wynik, gdyby tak się stało. –

Odpowiedz

9

atrybut XmlElement ma order property. Możesz użyć tego jako początku.

Jeśli chcesz znaleźć diff w plikach Xml, możesz rzucić okiem na this.

0

ps: Nie wierzę, że XML generowany przez XmlSerializer jest w niezdefiniowanej kolejności. Może być nieudokumentowane, ale wiadomo. Uważam, że w przypadku braku atrybutów Zamówienia, XmlSerializer serializuje wszystkie publiczne właściwości, posortowane alfą według nazwy, a następnie wszystkie publiczne pola, posortowane alfabetycznie według nazwy.

Powiązane problemy