Как сделать простую проверку схемы XML без пространств имен в C # - PullRequest
0 голосов
/ 15 июня 2011

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

Мой XML такой:

<?xml version="1.0" encoding="UTF-8"?>
<MyRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   -- rest of XML document here
</MyRoot>

Мой XSD такой:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:element name="MyRoot" type="MyRootType"/>
   -- MyRootType definition and rest of XSD
</xs:schema>

Когда я пытаюсь проверить XML с помощью XmlReader, я получаю следующую ошибку: «Элемент« MyRoot »не объявлен».

Что может быть не так?

Ответы [ 2 ]

1 голос
/ 15 июня 2011

В вашем элементе MyRoot вам нужно добавить местоположение XSD.Я бы также рекомендовал определить пространство имен (если у вас нет веских причин не делать этого).

<api:MyRoot  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
   xmlns:api='http://www.myserver.com/schema'
   xsi:schemaLocation='http://www.myserver.com/schema http://www.myserver.com/schema/websuiterecord.xsd'>
</api:MyRoot>

Таким образом, инструмент проверки знает, где найти XSD для проверки вашего XML.

0 голосов
/ 15 июня 2011

Подход был верным, но XSD не читался на самом деле. Я исправил это, и это сработало, как и ожидалось.

...