![](/img/trans.png)
[英]Store Business Rules in XML Document, Validate afterwards in Java, how?
[英]How to validate XML document with complex validation rules?
我必须验证具有许多复杂验证规则的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
Java是图灵完备的; XSD不是。 因此,存在一些我们可以用Java表达的约束,而这些约束不能用XSD表达。 (这也表明,与Java中表示的等效约束相比,XSD中表示的[其他条件相同]约束包含错误的可能性要小一些。)
是否可以在XSD中表达任何给定的约束集取决于这些约束。 从您的示例中很难看出:您的主要结构似乎说,如果文档的根元素名为aaa
,那么还应该有一个名为bbb
的根元素,而不是一个名为ccc
的根元素。 这是荒谬的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.