XSD 验证堆栈溢出异常

时间:2021-03-03 08:42:10

标签: java xml xsd stack-overflow

谁能解释在验证 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)));

1 个答案:

答案 0 :(得分:0)

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

<块引用>

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

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