我正在验证 Java 中的 XMLSchema,并在我有无效的内容模型时抛出 SAXParseExceptions。
我将使用这些异常来突出验证失败的地方 - 但 SAXParseExceptions 似乎有点太低级了。
例如,对于枚举失败,我在一个异常中得到提供的值与内容模型不匹配的有效性错误,以及在下一个异常中应用的元素。
我在想我需要一个实用程序来抽象一点,以将相关错误合并在一起并将异常文本解析为可用的异常属性。
这是一种合理的方法,还是我只是错过了一些东西,或者可能是一个库或帮助类?
更新@timgilbert,感谢您的回复。
例如,我在 t'internet 上发现的 SAXParseException
cvc-pattern-valid: Value 'en' is not facet-valid
with respect to pattern '([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*'
对我来说关键的事情是
- 此例外适用的元素“en”。为什么我不能调用 exception.getElement() 或其他东西,为什么不能调用相关元素的 XPath?内存文档比行号和列号更有用!
- 这是模式验证失败。为什么我不能得到可能的故障类型的枚举和对适当故障的引用?
- 验证失败的实际模式。
- 接下来会抛出另一个异常来告诉我导致我需要合并的问题的“en”元素的值
我希望能够做的一个例子是让人们提交一个文档并突出显示验证失败的文档并显示用户友好的消息 - 上面的错误消息似乎不太友好......必须解析用单引号感觉就像一场等待发生的事故:)
我想我可能在'reference-to-element'这件事上做错了,也许我应该在默认情况下对文档进行身份转换作为验证的一部分,并使用我的验证错误属性来增加转换可以用 CSS 挑选出来。如果我需要解析消息以使它们更友好,那仍然无济于事......
回复:紧密绑定,javax.xml.validation.Validator.validate() 无论如何都会抛出 org.xml.sax.SAXException - 不知道我该如何摆脱假设绑定......
干杯