У меня есть файл XML с указанным расположением схемы, например:
xsi:schemaLocation="someurl ..\localSchemaPath.xsd"
Я хочу проверить в C #. Visual Studio, когда я открываю файл, проверяет его на соответствие схеме и выдает список ошибок. Однако почему-то я не могу проверить его автоматически в C #, не указав схему для проверки следующим образом:
XmlDocument asset = new XmlDocument();
XmlTextReader schemaReader = new XmlTextReader("relativeSchemaPath");
XmlSchema schema = XmlSchema.Read(schemaReader, SchemaValidationHandler);
asset.Schemas.Add(schema);
asset.Load(filename);
asset.Validate(DocumentValidationHandler);
Должен ли я иметь возможность автоматически проверять схему, указанную в файле XML? Чего мне не хватает?
Ответы:
Вам необходимо создать экземпляр XmlReaderSettings и передать его своему XmlReader при его создании. Затем вы можете подписаться на
ValidationEventHandler
в настройках, чтобы получать ошибки проверки. Ваш код будет выглядеть так:источник
using
предложение для полноты :)settings.ValidationEventHandler += (o, args) => { errors = true; // More code };
Более простой способ, если вы используете .NET 3.5, это использование
XDocument
иXmlSchemaSet
проверка.См. Документацию MSDN для получения дополнительной помощи.
источник
<catalog><![CDATA[my <i> new </i> catalog....]]></catalog>
это правильный способ сделать это.В следующем примере проверяется файл XML и генерируется соответствующая ошибка или предупреждение.
В предыдущем примере используются следующие входные файлы.
books.xsd
источник
лично я одобряю проверку без обратного вызова:
(см. сообщение Timiz0r в Синхронной проверке XML-схемы? .NET 3.5 )
источник
Я должен был сделать этот вид автоматической проверки в VB, и вот как я это сделал (преобразован в C #):
Тогда я подписался на
settings.ValidationEventHandler
событие, читая файл.источник