XML架构验证(XSD)

时间:2014-12-05 03:23:04

标签: java xml xsd jaxb2

我只想知道场景背后是如何进行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

1 个答案:

答案 0 :(得分:0)

嗯,这取决于XML解析器和模式验证器的实现,但我认为大多数实现很可能要求每个文本节点(或属性值)都适合Java(等)字符串的限制。

我认为随着我们在字符串,数组等尺寸上达到2 ^ 31的限制,我们将在未来几年内看到越来越多的问题。这将是非常艰难的重新设计像Java这样的编程语言来克服这个问题,因为使用(int)数据类型来寻址这种结构是如此普遍。