微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XSD 验证堆栈溢出异常

如何解决XSD 验证堆栈溢出异常

谁能解释在验证 XSD 时 this 选项的用途是什么?如果我设置 truefalse 会发生什么背景事情?哪种情况需要将此选项设置为 true,哪种情况需要将此选项设置为 false?如果我的 XSD 超过 10MB,当我将此选项设置为 StackOverflow 时,我会收到 true 异常。

代码示例:

SymbolTable sym = new SymbolTable(BIG_PRIME);
preparser.setProperty(GRAMMAR_POOL,grammarPool);
preparser.setFeature(NAMESPACES_FEATURE_ID,true);
preparser.setFeature(VALIDATION_FEATURE_ID,true);
preparser.setFeature(SCHEMA_VALIDATION_FEATURE_ID,true);
preparser.setFeature(SCHEMA_FULL_CHECKING_FEATURE_ID,true);
MyXMLErrorHandler myXMLErrorHandler = new MyXMLErrorHandler(errorOutput);
XMLGrammarPreparser preparser = new XMLGrammarPreparser(sym);
Grammar g = preparser.preparseGrammar(XMLGrammarDescription.XML_SCHEMA,stringToXIS((String) inputoptions.schemas.get(i)));

解决方法

根据http://xerces.apache.org/xerces-j/features.html

启用完整的架构约束检查,包括检查可能耗时或占用大量内存的内容。目前,粒子唯一属性约束检查和粒子派生限制检查都由该选项控制。

您需要了解“唯一粒子属性”和“粒子派生限制”的含义。 Google 应该可以为您提供帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。