Можете ли вы предотвратить вставку узла в XmlDocument, если он не подходит для xsd? - PullRequest
0 голосов
/ 02 апреля 2009

У меня есть схема, и у меня есть документ. Я хочу разрешить вставку фрагмента XML в этот документ, но он должен быть действительным в соответствии со схемой.

Возможно ли это сделать в C #?

1 Ответ

0 голосов
/ 02 апреля 2009

Я никогда не делал этого раньше, но вы могли бы использовать события NodeChanged, NodeInserted и NodeRemoved XmlDocument (см. http://msdn.microsoft.com/en-us/library/system.xml.xmldocument_events.aspx). Когда событие возникает, вы можете повторно подтвердить документ. Если проверка после сбоя вы можете отменить, удалить или заново вставить узел.

Вы также можете использовать класс XmlSchemaValidator , который будет более сложным. Он следует модели, основанной на push, и во время проверки в основном говорит вам, что будет действительным в текущей точке. Я полагаю, вы могли бы проверить до точки вставки, а затем проверить, чтобы увидеть узел для вставки будет действительным в этой точке. Однако я использовал это только для генерации XML-документов, соответствующих набору схем; Я никогда не использовал его для простой проверки.

...