C # Создание набора данных из XSD, содержащей цифровую подпись - PullRequest
1 голос
/ 15 апреля 2011

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?Или кто-нибудь знает лучший способ настроить это в целом вместо использования набора данных на основе предоставленной схемы?

1 Ответ

0 голосов
/ 21 апреля 2015

Исходный файл схемы XML Signature от W3C содержит заголовок DTD в верхней части, я думаю, чтобы сделать его совместимым со старыми парсерами XML.Видимо, читателю схемы .Net это не нравится.Самое простое решение - закомментировать восемь строк от

<!DOCTYPE ...

до ]>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...