【发布时间】:2013-05-26 07:58:38
【问题描述】:
我正在根据 XSD 验证 XML 文档,然后想要删除导致文档失败的节点。
我遇到了一个问题,即 SaxParseException 似乎不包含任何有关我可用于以编程方式删除节点的失败信息。
有没有办法从 SaxParseException 中获取对元素的引用,可以用来删除它?
【问题讨论】:
我正在根据 XSD 验证 XML 文档,然后想要删除导致文档失败的节点。
我遇到了一个问题,即 SaxParseException 似乎不包含任何有关我可用于以编程方式删除节点的失败信息。
有没有办法从 SaxParseException 中获取对元素的引用,可以用来删除它?
【问题讨论】:
在此处查看答案:How to get the element of and invalid xml file with failed xsd Validation
请注意,在一般情况下,您建议执行的操作是不安全的。举一个简单的反例,取一个整数类型的元素X,它必须在其父元素中至少出现一次。如果您在其中放入一个字符串值,它现在将无法通过验证。如果删除它,文档将违反 minOccurs 约束。
您可以尝试删除元素并从头开始验证,但最终可能会陷入很长的循环并且不会得到好的结果。
【讨论】: