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_PROCESSINGfunction ,它对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应该不是问题。