你用什么来验证XML模式?

问题描述 投票:2回答:5

当我想针对服务器端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”或类似内容。

java validation xsd
5个回答
2
投票

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


0
投票

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


0
投票

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


0
投票

我们使用Castor

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


0
投票

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

alt text (来源:oxygenxml.com

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.