Сериализация XML, в данном случае IXmlSerializable или Attributes - PullRequest
1 голос
/ 14 мая 2009

Я уже делал некоторые сериализации XML, но я использовал атрибуты, я не уверен, что это выполнимо для моего следующего назначения, вот краткий список требований XML-манипуляторов.

  • Обработка XMl общего назначения, привязанная к древовидной структуре, без схемы.
  • Загрузить / сохранить XML.
  • Загружайте / Сохраняйте Атрибуты, а также Значения (я полагаю, что термин - Элемент Текст?), И помните имя узла.
  • Комментарии можно безопасно игнорировать, как и разметку информации документа (т. Е. Теги UTF-8 и схемы)

Любые предложения о том, как лучше всего справиться с этим?

Ответы [ 3 ]

0 голосов
/ 30 июля 2009

Я бы предложил вам использовать простую сериализацию XML, поддерживаемую .NET Framework.

Просмотрите документацию MSDN

Как сериализовать объект

Как десериализовать объект

0 голосов
/ 01 августа 2009

Не знаю, что именно вы имеете в виду под "раньше, но я использовал атрибуты", но я бы тоже порекомендовал XmlSerializer:

  • С "простыми" классами это обычно работает из коробки.
  • Для коллекций может потребоваться дополнительная работа, но это зависит от ваших требований и структуры объекта.
  • Существуют и другие встроенные сериализаторы XML, такие как XAML или WCF DataContractSerializer. У всех есть свои плюсы и минусы. Но если вы хотите точно настроить свой формат XML, XMLSerializer является наиболее гибким.
  • Вы можете приблизиться к вашему формату шаг за шагом: если по умолчанию выглядит хорошо, все готово. Если нет, то в большинстве случаев вам нужно добавить только некоторые атрибуты.
  • Если вам нужен полный контроль, вы все равно можете реализовать IXmlSerialize для точной настройки вашего формата.
  • Все применимо для каждого класса: при необходимости используйте значение по умолчанию, добавьте некоторые атрибуты, где это необходимо, и реализуйте IXmlSerializable, как требуется.
0 голосов
/ 14 мая 2009

Я, вероятно, не стал бы беспокоиться об объектной модели и IXmlSerializable - звучит так, как будто вы могли бы также говорить в терминах XmlElement / XmlDocument - то есть передавать данные как блок xml. Поскольку у вас нет схемы, было бы бессмысленно уничтожать ее; Вы могли бы также сделать это через XML DOM.

Когда вы говорите древовидное представление - это winforms, asp.net, wpf? Я полагаю, что древовидная структура asp.net может взять исходный код xml, но для winforms вам придется самим итерировать узлы.

...