如果它对 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 中吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Java DocumentBuilder 中解析 XSD 文件期间将元素附加到现有节点列表