XMLSchema的解决方法不支持maxOccurs大于5000
我的问题是解析一个XSD Schema,它包含maxOccurs
大于5000(但不是unbounded
)的元素。
这实际上是Xerces(我正在使用的版本2.9.1)或JAXP中的一个已知问题,如下所述: http ://bugs.sun.com/view_bug.do;jsessionid=85335466c2c1fc52f0245d20b2e?bug_id= 4990915
我已经知道,如果我将XSD中的maxOccurs数字从大于5000的数字更改为unbounded
一切正常。 遗憾的是,在我的情况下这不是一个选项 (我不能插入XSD文件)。
我的问题是:
- 有人知道Xerces中有关此问题的其他一些解决方法吗? 要么
- 有人可以推荐另一个没有此限制的XML解析器吗?
谢谢!
我有同样的问题。 我用过这个:
System.setProperty("jdk.xml.maxOccurLimit", "XXXXX");
我找到了一个不需要更改解析器的解决方案。
有一个FEATURE_SECURE_PROCESSING
function ,它对maxOccurs(以及其他几个)提出了5000限制。
以下是描述限制的文档: http : //docs.oracle.com/javase/7/docs/technotes/guides/xml/jaxp/JAXP-Compatibility_160.html#JAXP_security
在控制台中使用xjc
命令时,我在寻找此问题的解决方案时遇到了这个线程。
对于使用xjc
命令解析xsd的任何人来说,这对我xjc
:
$ xjc -nv foo.xsd
请注意:
默认情况下,XJC绑定编译器在处理源模式之前执行严格的validation。 使用此选项可禁用严格架构validation。 这并不意味着绑定编译器不会执行任何validation,而是意味着它将执行不太严格的validation。
因此,如果您认为您的xsd来自一个好的来源,那么使用不太严格的validation应该不是问题。