2

当我想根据服务器端 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 对 Schema,从而在验证失败时提供更有用的输出?

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

4

5 回答 5

2

在您的验证处理程序中,您应该收到带有该消息的 SAXParseException,以及 XML 文件中的列号和行号。不是这样吗?

于 2008-10-04T01:09:29.437 回答
0

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

于 2008-09-30T16:35:22.720 回答
0

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

于 2008-09-30T16:52:37.627 回答
0

我们使用Castor

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

于 2008-10-02T15:22:01.023 回答
0

如果您在解释 Xerces 错误时遇到问题,并且想要一些有助于突出显示您在文档中违反规则的地方的内容,请查看一些 XML 创作工具,例如oXygen

替代文字
(来源:oxyxml.com

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

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

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

于 2009-05-30T23:59:45.087 回答