我正在使用SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI)中的javax.xml.validation.Validator来执行XSD验证。
我希望能够为验证错误获得更好的错误消息。
我目前得到的是:
org.xml.sax.SAXParseException: cvc-minLength-valid: Value '' with length = '0' is not facet-valid with respect to minLength '1' for type 'TypeCode'.
是否可以打印错误哪个元素或xml片段验证失败?
*编辑:我使用的是标准的java6 xml解析器 * Edit2:很抱歉没有提及 - 我正在使用JAXB通过内容处理程序和监听器读取XML(由于XML大多数情况下都是> 1GB)。
答案 0 :(得分:1)
可能不是你正在使用的验证器(可能是一个Xerces使用的?)。还有其他验证器,例如Sun的多模式验证器,但我不知道是否有任何特别好的错误消息用于模式验证。 对于DTD验证,Woodstox有更好的异常消息,但对于XML Schema验证,它依赖于MSV。
然而;即使是默认的解析器/验证器也应该能够为您提供实际的错误位置(或附近的东西)。如果没有错误消息,您至少应该能够通过注册SAX侦听器来跟踪前面的位置,因为您使用的验证器正在使用SAX API。
答案 1 :(得分:0)
您是否尝试使用Validator注册ErrorHandler并访问相应SAXParseException的详细信息?