XML (де) сериализация и обновления схемы - PullRequest
1 голос
/ 10 февраля 2012

У меня есть сложный граф XML-сериализуемых классов, которые я могу (де) сериализовать на жесткий диск просто отлично.Но как мне обработать массивные изменения в структуре схемы графа?Есть ли какой-то механизм для обработки обновлений XML-схемы?Некоторые классы, которые позволят мне перенести старые данные в новый формат?

Конечно, я мог бы просто использовать XmlReader / XmlWriter , пройти через каждый узел и атрибут и написатьнесколько тысяч строк кода для преобразования данных в новый формат, но, может быть, есть лучший способ?


Я нашел Сериализация графов объектов в .NET и обновления версии кода ,но я не думаю, что связанные статьи применимы, когда в модели происходят серьезные изменения.

Ответы [ 2 ]

2 голосов
/ 10 февраля 2012

Вместо написания нескольких тысяч строк кода для преобразования файлов с использованием XmlReader / XmlWriter, вы можете использовать XSLT. Мы все еще говорим о сотнях строк кода и, возможно, о более низких скоростях выполнения, но если вы хорошо разбираетесь в XSLT, вы можете сделать это намного быстрее.

Другой подход заключается в создании программы на C #, которая связывает как старый класс, так и новый класс (конечно, вам нужно будет переименовать старый класс, чтобы избежать конфликта имен). Программа загружает OldMyClass с диска, создает NewMyClass из значений ее атрибутов и сериализует NewMyClass на диск. По сути, этот подход переносит задачу конвертации в территорию C #, которая может быть вам более знакома.

0 голосов
/ 10 февраля 2012

В этом случае я сохраняю свои изменения в своем объекте и воссоздаю свой xml через XmlSerializer: http://support.microsoft.com/kb/815813

С этим я загружаю и сохраняю новую схему xml, основанную на моем объекте.

...