关闭 SAXParserFactory 的验证

Turn off validation for a SAXParserFactory

在使用 XML 的 java 应用程序上,必须在禁用 XML 验证的情况下执行某些测试,以确保 java 部分在它们出现时正确运行面对不正确的数据。我们还需要它来检查旧方法(10 多年前写的)。

我试图找到 SAXParserFactory 的每一次出现并使用

setValidation(false);

就可以了,为了禁用验证。不幸的是,我不断收到如下链接的错误。

我已经研究了一段时间了,无法与类似的案例联系起来。触发异常的元素类似于:

Exception=org.xml.sax.SAXException, cvc-complex-type.4=Attribute 'date' must appear on element 'XXXXXXXXX'

关于正确禁用验证的正确方法有什么想法吗?

感谢阅读。

我猜你的意思是 SAXParserFactory#setValidating(boolean value)。但是,该方法控制解析器是否根据 DTD 验证 XML 文档。在您的堆栈跟踪中,它看起来像是使用了模式。

为避免对模式进行验证,您应该查找出现的 SAXParserFactory#setSchema(...) 并做任何必要的事情(remove/comment)。