Java 您使用什么来验证XML模式?

Java 您使用什么来验证XML模式?,java,validation,xsd,Java,Validation,Xsd,当我想根据服务器端Java中的模式验证XML文档时,我使用内置的JRE Xerces实现和javax.XML.validation.schema。它工作正常,但当验证失败时,Xerces会给出几乎无用的错误消息,例如: cvc-minLength-valid: Value '' with length = '0' is not facet-valid with respect to minLength '1' for type 'PopulatedStringType' 诊断和跟踪XML文档中

当我想根据服务器端Java中的模式验证XML文档时,我使用内置的JRE Xerces实现和javax.XML.validation.schema。它工作正常,但当验证失败时,Xerces会给出几乎无用的错误消息,例如:

cvc-minLength-valid: Value '' with length = '0' is not facet-valid with respect to minLength '1' for type 'PopulatedStringType'
诊断和跟踪XML文档中未通过验证的特定部分可能需要一段时间,而这一切都是由于错误消息造成的

所以我的问题是,您是否使用另一种方法根据模式验证XML,从而在验证失败时提供更有用的输出

请不要说这是服务器端Java,所以请不要说“使用XML Spy”或类似的说法。

我们使用它,包括带有验证解析器的xmlparserv2.jar和XSLT2.0。它使用JAXB API,因此您只需将其添加到类路径并更改导入即可。它抛出的错误并不完美,但我认为比您的示例更容易理解。

xmlstarlet(xmlstar.sourceforge.net/)是一个命令行工具包。您可以对给定的xml使用Runtime.exec()运行它(只要xml在文件中)。

我们使用

Castor是Java[tm]的开源数据绑定框架。它是Java对象、XML文档和关系表之间的最短路径。Castor提供Java到XML绑定、Java到SQL持久性等


在用于验证的处理程序中,您应该收到带有该消息的SAXParseException,以及XML文件中的。不是吗

如果您在解释Xerces错误时遇到困难,并且希望有助于突出显示文档中违反规则的地方,请查看一些XML创作工具,例如


(来源:)

将模式与实例XML文档关联后,编辑器将突出显示文档的违规区域,并为您提供违规说明

此外,您还可以使用不同的引擎执行验证:

氧气内置支持: Xerces、LIBXML、XSV、Saxon SA、, MSXML4.0、MSXML.NET和SQC


对我来说,一个相当明确的错误消息:它指示在XML模式中指定的“填充字符串类型”有一个被XML实例侵犯的最小长度的小面?+ 1 @工具包,您可能需要考虑花一些时间来理解XECES错误消息。我怀疑另一个验证器会更清楚。我完全理解这条消息,但是当错误消息没有告诉您时,您会尝试查找10兆XML文档的哪一部分违反了模式。这些文档有数千个PopulatedStringType元素,具有许多不同的元素名称。找到一个合适的几乎是不可能的。你为什么使用Castor,它对我的问题有什么帮助?