Visual Studios 2005, .NET 2.0
Я работаю над службой обмена сообщениями, которая отправляет и получает сообщения XML на основе стороннего файла схемы, который я не могу изменить.(Я проверил схему как действительную и сгенерировал образец XML-сообщения, используя XML-код Altova.) Лучшее решение, которое я нашел для обработки этого требования, - это создать набор данных на основе схемы и затем заполнить набор данных с помощью DataSet.ReadXml ().Затем DataSet.WriteXml () можно будет использовать при создании сообщений.
Когда в прошлом я строил наборы данных из файлов .xsd, я использовал специальный инструмент MSDataSetGenerator.Однако в файле схемы у меня возникают ошибки при запуске его через MSDataSetGenerator с ошибкой:
Ошибка пользовательского инструмента: не удалось сгенерировать код.Невозможно преобразовать содержимое входного XML-файла в набор данных.Элемент 'http://www.w3.org/2000/09/xmldsig#:KeyInfo' не объявлен.
Ниже приведены строки, относящиеся к цифровым подписям / KeyInfo / Signature из файла схемы.
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/>
Далее в разделеfile это ссылается на 2 объекта, определенных в этой схеме:
<xs:element ref="ds:Signature" minOccurs="0"/>
<xs:element ref="ds:KeyInfo" minOccurs="0"/>
Я также попытался загрузить схему, выполнив:
DataSet ds = new DataSet();
ds.ReadXmlSchema("schema.xsd");
Но это также выдает ту же ошибку в отношении KeyInfo небыть объявленным.
Есть ли другой способ создания набора данных, который мне не хватает, или параметр, который мне нужно установить, чтобы иметь возможность использовать MSDataSetGenerator?Или кто-нибудь знает лучший способ настроить это в целом вместо использования набора данных на основе предоставленной схемы?