代码之家  ›  专栏  ›  技术社区  ›  Steven

java xml验证:获得更好的验证错误描述

  •  3
  • Steven  · 技术社区  · 15 年前

    我正在使用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读取带有contenthandler和监听器的XML(因为大多数时候XML都是>1GB)。

    2 回复  |  直到 15 年前
        1
  •  1
  •   StaxMan    15 年前

    可能没有验证器(可能是Xerces使用的?)你在用。还有其他的验证器,例如Sun的多模式验证器,但是我不知道是否有特别好的模式验证错误消息。 对于DTD验证,Woodstox有更好的异常消息,但对于XML模式验证,它依赖于MSV。

    但是,即使是默认的解析器/验证器也应该能够提供实际的错误位置(或附近的一些信息)。如果没有错误消息,您至少应该能够通过注册SAX侦听器来跟踪前面的位置,因为您使用的验证器使用的是SAX API。

        2
  •  0
  •   bdoughan    15 年前

    您是否尝试向验证器注册错误处理程序并访问相应SAXParseException的详细信息?