Сериализация для конкретного XSD с использованием XmlSerializer - PullRequest
3 голосов
/ 05 августа 2010

У меня есть специфичный для бизнеса внутренний XSD, который мы используем для представления исключения бизнес-уровня (то есть: не обязательно одного в коде, а ошибки в процессе), чтобы различные бизнес-единицы могли сообщать друг другу, когдамодульные процессы завершились неудачно.

Мне было поручено написать компонент для регистрации этих исключений, а также их исходных запросов и (если возможно) сгенерированного ответа.Все это происходит через biztalk, поэтому я не могу просто взять данные и записать их в БД: мне нужно вернуть XmlDocument в исходную оркестровку BizTalk, чтобы наша оркестровка ExceptionHandling могла с ней справиться.

Хорошовсе это имеет смысл (по крайней мере, в рамках бизнеса - я вижу и другие способы сделать это, но этот работает для нас).Проблема заключается в следующем: у меня есть Xsd с несколькими вложенными элементами, включая исходный XML-запрос и, возможно, исходный XML-код ответа.Я могу создать класс, который содержит все это просто отлично.Я могу взять данные, переданные в класс, и просто создать экземпляр.

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

Что-то вроде:

XmlSerializer ser = new XmlSerializer(typeOf(myClass), "mySchema.xsd");
ser.Serialize(myStream, myInstance);

было бы идеально, но любое направление помогло бы.Как примечание, я использую VS2005.

1 Ответ

0 голосов
/ 05 августа 2010

Я нахожу XMlSerializer немного сложным для управления. Я предлагаю поискать другой метод, такой как XDocument, который я считаю очень гибким в этих случаях.

Ссылка: Обзор класса XDocument

...