处理限制定义

下表描述了 JDK 支持的 JAXP XML 处理限制。可以通过工厂 API,系统属性和jaxp\.properties文件来指定这些限制。

entityExpansionLimit

AttributeDescription
Namehttp://www\.oracle\.com/xml/jaxp/properties/entityExpansionLimit
Definition限制实体扩展的数量。
Value一个正整数。小于或等于 0 的值表示没有限制。如果该值不是整数,则抛出NumericFormatException
Default value64000
System propertyjdk\.xml\.entityExpansionLimit
Since7u45, 8

elementAttributeLimit

AttributeDescription
Namehttp://www\.oracle\.com/xml/jaxp/properties/elementAttributeLimit
Definition限制元素可以具有的属性数量。
Value一个正整数。小于或等于 0 的值表示没有限制。如果该值不是整数,则抛出NumericFormatException
Default value10000
System propertyjdk\.xml\.elementAttributeLimit
Since7u45, 8

maxOccurLimit

AttributeDescription
Namehttp://www\.oracle\.com/xml/jaxp/properties/maxOccurLimit
Definition限制为包含maxOccurs属性(其值不是“无界”)的 W3C XML Schema 构建语法时可以创建的内容模型节点的数量。
Value一个正整数。小于或等于 0 的值表示没有限制。如果该值不是整数,则抛出NumericFormatException
Default value5000
System propertyjdk\.xml\.maxOccurLimit
Since7u45, 8

totalEntitySizeLimit

AttributeDescription
Namehttp://www\.oracle\.com/xml/jaxp/properties/totalEntitySizeLimit
Definition限制包括常规和参数实体的所有实体的总大小。大小计算为所有实体的汇总。
Value一个正整数。小于或等于 0 的值表示没有限制。如果该值不是整数,则抛出NumericFormatException
Default value5x10^7
System propertyjdk\.xml\.totalEntitySizeLimit
Since7u45, 8

maxGeneralEntitySizeLimit

AttributeDescription
Namehttp://www\.oracle\.com/xml/jaxp/properties/maxGeneralEntitySizeLimit
Definition限制任何常规实体的最大大小。
Value一个正整数。小于或等于 0 的值表示没有限制。如果该值不是整数,则抛出NumericFormatException
Default value0
System propertyjdk\.xml\.maxGeneralEntitySizeLimit
Since7u45, 8

maxParameterEntitySizeLimit

AttributeDescription
Namehttp://www\.oracle\.com/xml/jaxp/properties/maxParameterEntitySizeLimit
Definition限制任何参数实体的最大大小,包括嵌套多个参数实体的结果。
Value一个正整数。小于或等于 0 的值表示没有限制。如果该值不是整数,则抛出NumericFormatException
Default value1000000
System propertyjdk\.xml\.maxParameterEntitySizeLimit
Since7u45, 8

entityReplacementLimit

AttributeDescription
Namehttp://www\.oracle\.com/xml/jaxp/properties/entityReplacementLimit
Definition限制所有实体引用中的节点总数。
Value一个正整数。小于或等于 0 的值表示没有限制。如果该值不是整数,则抛出NumericFormatException
Default value3000000
System propertyjdk\.xml\.entityReplacementLimit
Since7u111, 8u101

maxElementDepth

AttributeDescription
Namehttp://www\.oracle\.com/xml/jaxp/properties/maxElementDepth
Definition限制最大元素深度。
Value一个正整数。小于或等于 0 的值表示没有限制。如果该值不是整数,则抛出NumericFormatException
Default value0
System propertyjdk\.xml\.maxElementDepth
Since7u65, 8u11

maxXMLNameLimit

AttributeDescription
Namehttp://www\.oracle\.com/xml/jaxp/properties/maxXMLNameLimit
Definition限制 XML 名称的最大大小,包括元素名称,属性名称以及名称空间前缀和 URI。
Value一个正整数。小于或等于 0 的值表示没有限制。如果该值不是整数,则抛出NumericFormatException
Default value1000
System propertyjdk\.xml\.maxXMLNameLimit
Since7u91, 8u65

旧版系统属性

自 JDK 5.0 和 6 开始引入的这些属性将 continue 受支持以实现向后兼容。

System PropertySince新系统属性
entityExpansionLimit1.5jdk.xml.entityExpansionLimit
elementAttributeLimit1.5jdk.xml.elementAttributeLimit
maxOccurLimit1.6jdk.xml.maxOccur

{java.home}/lib/jaxp.properties

可以在jaxp\.properties文件中指定系统属性,以定义 JDK 或 JRE 的所有调用的行为。格式为system\-property\-name=value。例如:

jdk.xml.maxGeneralEntitySizeLimit=1024