XMLSerialization и проверка XML-схемы - PullRequest
0 голосов
/ 28 марта 2011

Можно ли использовать проверку схемы XML и XMLSerializer вместе?

Мой проект в настоящее время использует XMLSerializer.Чтобы проверить схему, мы программно проверяем такие значения, как:

if(String.IsNullOrEmpty(person.Name))
   throw new Exception();

Спасибо!

Ответы [ 3 ]

2 голосов
/ 11 декабря 2011

Вы можете добавить некоторые дополнительные проверки в xsd, используя элемент ограничения элемента. Каждый тип имеет некоторые аспекты, которые вы можете применить к типу / элементу - от простой минимальной / максимальной длины до регулярных выражений.

Вы даже можете сделать еще один шаг вперед и использовать элемент appinfo xsd, где вы можете добавить пользовательскую спецификацию для проверки правильности и т. Д. Однако для этого шага необходимо проанализировать каждый узел XML по отдельности, так как обычная проверка схемы XML не запускает функцию appinfo.

В качестве последнего средства вы можете даже взглянуть на Schematron, который является формализованным способом добавления довольно сложной проверки в ваш xsd, но сам по себе он немного сложен, а во многих ситуациях излишним.

1 голос
/ 28 марта 2011

Я бы предложил использовать XmlValidatingReader для проверки схемы. Пожалуйста, см. http://www.codeproject.com/KB/XML/Serialization.aspx для примера ...

0 голосов
/ 28 марта 2011

На самом деле вы можете просто предоставить XSD в XML. Когда вы читаете его с помощью XMLSerializer, он выдаст исключения, если XML не соответствует XSD.

...