你用什么来验证XML模式?

时间:2008-09-30 16:24:08

标签: 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文档的特定部分,并且所有这些都是因为错误消息不佳。

所以我的问题是,您是否使用另一种方法来验证针对Schema的XML,这会在验证失败时提供更有用的输出?

请注意,这不是服务器端Java,因此请不要说“使用XML Spy”或类似内容。

5 个答案:

答案 0 :(得分:2)

在验证的处理程序中,您应该收到带有该消息的SAXParseException,以及XML文件中的column number and the line number。不是这样的吗?

答案 1 :(得分:0)

我们使用包含xmlparserv2.jar的Oracle's XDK (XML Development Kit)和一个验证解析器以及XSLT 2.0。它使用JAXB API,因此您只需将其添加到类路径并更改导入。它会抛出不完美的错误,但我会说比你的例子更容易理解。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我们使用Castor

  

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

答案 4 :(得分:0)

如果您在解释Xerces错误时遇到问题,并希望能够突出显示文档中违反规则的位置,请查看一些XML创作工具,例如oXygen

alt text
(来源:oxygenxml.com

将架构与实例XML文档关联后,编辑器将突出显示文档的违规区域,并为您提供违规的描述。

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

  

oXygen内置支持:   Xerces,LIBXML,XSV,Saxon SA,   MSXML4.0,MSXML .NET和SQC。