我只想知道场景背后是如何进行XSD验证的。 如果我按如下方式定义XSD
<xs:simpleType name="MaxText">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="10000000000000"/>
</xs:restriction>
</xs:simpleType>
要对字符串长度进行实际验证,java是否需要将XML的整个字符串值加载到内存中?如果是这种情况,可能会抛出“java.lang.OutOfMemoryError:Java堆空间”。
感谢任何评论。
此致 Mayuran
答案 0 :(得分:0)
嗯,这取决于XML解析器和模式验证器的实现,但我认为大多数实现很可能要求每个文本节点(或属性值)都适合Java(等)字符串的限制。
我认为随着我们在字符串,数组等尺寸上达到2 ^ 31的限制,我们将在未来几年内看到越来越多的问题。这将是非常艰难的重新设计像Java这样的编程语言来克服这个问题,因为使用(int)数据类型来寻址这种结构是如此普遍。