2009-03-04 2 views
6

В настоящее время я использую XmlSerializer для сериализации и десериализации объекта. Xml генерируется в неопределенном порядке, который является понятным, но делает его раздражающим при сравнении версий объекта, так как порядок свойств различен каждый раз. Так, например, я не могу использовать обычный инструмент diff, чтобы увидеть различия.Любой способ сделать XmlSerializer вывести xml в определенном порядке?

Есть ли простой способ генерировать мой xml в том же порядке каждый раз, не записывая сами методы ReadXml и WriteXml? У меня есть много свойств в классе и каждый раз добавляю новые, поэтому предпочитаю не писать, а затем поддерживать этот код.

(C# .net 2.0)

+0

Можете ли вы привести пример, который воспроизводит этот «неопределенный порядок»? Я никогда не видел, чтобы это произошло, и я не вижу, как XML Serializer сможет десериализовать результат, если это произойдет. –

ответ

9

Атрибут XmlElement имеет order property. Вы можете использовать это как начало.

Если вам нужно найти diff в файлах Xml, вы можете взглянуть на this.

0

ps: Я не верю, что XML, сгенерированный XmlSerializer, находится в неопределенном порядке. Это может быть недокументировано, но известно. Я считаю, что при отсутствии атрибутов Order, XmlSerializer сериализует все общедоступные свойства, альфа-сортировку по имени prop, а затем все общедоступные поля, отсортированные по имени по алфавиту.

Смежные вопросы