在使用XML的Java应用程序上,必须在禁用XML验证的情况下执行某些测试,以确保java部件在面对不正确的数据时表现正常。我们还需要它来检查旧方法(超过10年前编写)。
我试图找到SAXParserFactory的每个出现并使用
setValidation(false);
就可以了,为了禁用验证。不幸的是,我不断收到类似下面链接的错误。
我现在已经玩了一段时间了,并且与这样的类似情况无关。触发异常的元素与此类似:
Exception=org.xml.sax.SAXException, cvc-complex-type.4=Attribute 'date' must appear on element 'XXXXXXXXX'
关于正确禁用验证的正确方法的任何想法?
感谢阅读。
答案 0 :(得分:2)
我猜你的意思是SAXParserFactory#setValidating(boolean value)
。但是,该方法控制解析器是否根据DTD验证XML文档。在堆栈跟踪中,它看起来像是使用模式。
为避免对模式进行验证,您应该查找出现的情况
SAXParserFactory#setSchema(...)
并做任何必要的事情(删除/评论)。