基于XML内容的XSD验证

时间:2012-03-27 08:23:18

标签: java xml xsd

我有一个Java程序,我必须根据XSD架构验证XML消息。到现在为止还挺好。但是现在我得到了一个新的要求,其中部分验证根据XML消息的内容而有所不同。

因此,基于一个字段(1)的值,某些字段可以填充或不填充,并且一些枚举是不同的。但是我无法在验证之前解析文档......所以我该如何处理这个?

1)有2个不同的XSD文件,将XML作为文本处理(=丑陋)并提取一个字段来决定应该使用什么XSD?

2)有3个不同的XSD文件。 2个不同的选项和一个联合,所以我们可以以匹配2个选项的方式进行验证?我们可以正确地解析XML,提取字段并决定使用哪个更具体的XSD进行额外验证?

3)其他选择?

2 个答案:

答案 0 :(得分:1)

不要用JAXB解析它,而是使用SAX / StAX类型解析器(或DOM,如果你真的想要,虽然SAX会更快,如果你只需要一些元素)来定位和分析元素你需要以确定需要使用的正确模式。收集到足够的信息后,中止解析并使用正确的模式验证再次解析。

答案 1 :(得分:0)

你在编写自己的java验证吗?我建议使用开源或付费验证:XML Schema (XSD) validation tool?工具。

同样根据您所描述的内容,您的架构不再向后兼容,因为您必须根据某些元素使用两种不同的架构,我建议您回复该要求并查看架构是否可以更改并更新以保持向后兼容性。这样就可以继续为你的xml文件使用1个Schema。