0

我必须验证具有许多复杂验证规则的 XML。我正在考虑定义一个 XSD 文件来自动进行验证,但是有一些复杂的文件无法在 XSD 中定义。

现在要写很多java代码,通过xpath获取值,一一验证,写代码和测试都很无聊。

我正在寻找一种简单的方法来做到这一点,是否有任何 XML 验证库?或者我们可以在 java 中定义一些非常复杂的验证规则并与 XSD 一起使用吗?


更新:

我忘了提到,我需要在错误消息中添加一些错误代码,以帮助另一个团队处理错误。我不确定 XSD 是否可以让我这样做。


再次更新:

一个复杂的规则:(以下路径在文档的一个节点下,比如说/my-node,而不是根)

if /aaa exists
    /bbb should exist
    /ccc should not exist, and
    if /aaa's value is 111:
       /bbb's value should be 222
    if /aaa's value is 555:
       /bbb's value should be 666
else
    /bbb should not exist
    /ccc should exist, and its value should not be number
4

1 回答 1

0

Java 是图灵完备的;XSD 不是。因此,我们可以在 Java 中表达无法在 XSD 中表达的约束。(这也表明在 XSD 中表达的 [other things are equal] 约束比在 Java 中表达的等效约束更不可能包含错误。)

任何给定的约束集是否可以在 XSD 中表示取决于约束。从您的示例中,很难说:您的主要结构似乎在说,如果文档的根元素是 named aaa,那么也应该有一个根元素 named bbb,但不是根元素 named ccc。这是荒谬的。

于 2013-09-02T14:37:55.263 回答