我正在编写一个小应用程序,用于验证xml文件,更正它们(如果可能),然后对内容执行测试。最终用户对XML和解析知之甚少,因此我想捕获验证错误,然后编写自己的事件和错误处理程序,生成错误消息,希望最终用户更容易理解。
我的初步尝试基于this blogpost中详述的解决方案。
到目前为止,我已根据event.getMessage()的内容对错误进行了分类。不幸的是,在不知道可能发生的所有类型的解析错误的情况下,编写好的自定义错误消息或多或少是不可能的。有没有一种好方法可以找到验证期间可能出现的错误消息类型?
即。我正在寻找所有邮件的列表,例如元素X的内容不是完整的......,从元素Y开始发现无效内容...,值Z对于模式而言不是方面有效...
或者有更好的方法吗?
答案 0 :(得分:2)
消息的格式和数量取决于您插入JAXB的XML Schema验证器。如果您使用的是基于Xerces-J的(如Oracle JDK中包含的那个),大多数消息将以XML Schema规范中的验证规则/约束对应的标识符作为前缀(例如cvc-maxLength-valid
)。 XML Schema验证规则的标识符列表在规范中可用here。 Xerces生成的XML模式相关错误消息的完整列表可以在其XMLSchemaMessages.properties消息文件中找到,但请记住,这已经随着时间的推移而发生变化,并且取决于您正在使用的Xerces版本。