如果它对 xsd 无效,你能阻止节点插入到 XmlDocument 中吗?

Posted

技术标签:

【中文标题】如果它对 xsd 无效,你能阻止节点插入到 XmlDocument 中吗?【英文标题】:Can you prevent node insertion into an XmlDocument if it's invalid against the xsd? 【发布时间】:2009-04-02 14:16:02 【问题描述】:

我有一个架构,我有一个文档。我想允许将 xml 片段插入到该文档中,但是,它必须根据架构有效。

在 C# 中可以做到这一点吗?

【问题讨论】:

是的,有可能。您是在问如何根据架构验证文档以验证插入的片段? 我想阻止节点的插入,如果它会使文档无效。 【参考方案1】:

我以前从未这样做过,但您可以使用 XmlDocument 的 NodeChanged、NodeInserted 和 NodeRemoved 事件(请参阅http://msdn.microsoft.com/en-us/library/system.xml.xmldocument_events.aspx)。引发事件时,您可以重新验证文档。如果验证失败,您可以取消更改、删除或重新插入节点。

您也可以使用XmlSchemaValidator 类,那样会更复杂。它遵循基于推送的模型,并且在验证期间基本上会告诉您在当前点什么是有效的。我想您可以验证到插入点,然后检查要插入的节点在该点是否有效。但是,我只使用它来生成符合模式集的 XML 文档;我从来没有将它用于简单的验证。

【讨论】:

以上是关于如果它对 xsd 无效,你能阻止节点插入到 XmlDocument 中吗?的主要内容,如果未能解决你的问题,请参考以下文章

XML、XSD 和 XSLT 学生的项目

如何在 Java DocumentBuilder 中解析 XSD 文件期间将元素附加到现有节点列表

XML,XSD和XSLT学生的项目

插入 XML 数据时,将数据记录作为前缀的无效字符(?)到数据库列 [关闭]

不使用注释的 Java 代码到 XML/XSD

使用 SQL 插入 XML 元素