处理限制定义
下表描述了 JDK 支持的 JAXP XML 处理限制。可以通过工厂 API,系统属性和jaxp\.properties
文件来指定这些限制。
entityExpansionLimit
Attribute | Description |
Name | http://www\.oracle\.com/xml/jaxp/properties/entityExpansionLimit |
Definition | 限制实体扩展的数量。 |
Value | 一个正整数。小于或等于 0 的值表示没有限制。如果该值不是整数,则抛出NumericFormatException 。 |
Default value | 64000 |
System property | jdk\.xml\.entityExpansionLimit |
Since | 7u45, 8 |
elementAttributeLimit
Attribute | Description |
Name | http://www\.oracle\.com/xml/jaxp/properties/elementAttributeLimit |
Definition | 限制元素可以具有的属性数量。 |
Value | 一个正整数。小于或等于 0 的值表示没有限制。如果该值不是整数,则抛出NumericFormatException 。 |
Default value | 10000 |
System property | jdk\.xml\.elementAttributeLimit |
Since | 7u45, 8 |
maxOccurLimit
Attribute | Description |
Name | http://www\.oracle\.com/xml/jaxp/properties/maxOccurLimit |
Definition | 限制为包含maxOccurs 属性(其值不是“无界”)的 W3C XML Schema 构建语法时可以创建的内容模型节点的数量。 |
Value | 一个正整数。小于或等于 0 的值表示没有限制。如果该值不是整数,则抛出NumericFormatException 。 |
Default value | 5000 |
System property | jdk\.xml\.maxOccurLimit |
Since | 7u45, 8 |
totalEntitySizeLimit
Attribute | Description |
Name | http://www\.oracle\.com/xml/jaxp/properties/totalEntitySizeLimit |
Definition | 限制包括常规和参数实体的所有实体的总大小。大小计算为所有实体的汇总。 |
Value | 一个正整数。小于或等于 0 的值表示没有限制。如果该值不是整数,则抛出NumericFormatException 。 |
Default value | 5x10^7 |
System property | jdk\.xml\.totalEntitySizeLimit |
Since | 7u45, 8 |
maxGeneralEntitySizeLimit
Attribute | Description |
Name | http://www\.oracle\.com/xml/jaxp/properties/maxGeneralEntitySizeLimit |
Definition | 限制任何常规实体的最大大小。 |
Value | 一个正整数。小于或等于 0 的值表示没有限制。如果该值不是整数,则抛出NumericFormatException 。 |
Default value | 0 |
System property | jdk\.xml\.maxGeneralEntitySizeLimit |
Since | 7u45, 8 |
maxParameterEntitySizeLimit
Attribute | Description |
Name | http://www\.oracle\.com/xml/jaxp/properties/maxParameterEntitySizeLimit |
Definition | 限制任何参数实体的最大大小,包括嵌套多个参数实体的结果。 |
Value | 一个正整数。小于或等于 0 的值表示没有限制。如果该值不是整数,则抛出NumericFormatException 。 |
Default value | 1000000 |
System property | jdk\.xml\.maxParameterEntitySizeLimit |
Since | 7u45, 8 |
entityReplacementLimit
Attribute | Description |
Name | http://www\.oracle\.com/xml/jaxp/properties/entityReplacementLimit |
Definition | 限制所有实体引用中的节点总数。 |
Value | 一个正整数。小于或等于 0 的值表示没有限制。如果该值不是整数,则抛出NumericFormatException 。 |
Default value | 3000000 |
System property | jdk\.xml\.entityReplacementLimit |
Since | 7u111, 8u101 |
maxElementDepth
Attribute | Description |
Name | http://www\.oracle\.com/xml/jaxp/properties/maxElementDepth |
Definition | 限制最大元素深度。 |
Value | 一个正整数。小于或等于 0 的值表示没有限制。如果该值不是整数,则抛出NumericFormatException 。 |
Default value | 0 |
System property | jdk\.xml\.maxElementDepth |
Since | 7u65, 8u11 |
maxXMLNameLimit
Attribute | Description |
Name | http://www\.oracle\.com/xml/jaxp/properties/maxXMLNameLimit |
Definition | 限制 XML 名称的最大大小,包括元素名称,属性名称以及名称空间前缀和 URI。 |
Value | 一个正整数。小于或等于 0 的值表示没有限制。如果该值不是整数,则抛出NumericFormatException 。 |
Default value | 1000 |
System property | jdk\.xml\.maxXMLNameLimit |
Since | 7u91, 8u65 |
旧版系统属性
自 JDK 5.0 和 6 开始引入的这些属性将 continue 受支持以实现向后兼容。
System Property | Since | 新系统属性 |
entityExpansionLimit | 1.5 | jdk.xml.entityExpansionLimit |
elementAttributeLimit | 1.5 | jdk.xml.elementAttributeLimit |
maxOccurLimit | 1.6 | jdk.xml.maxOccur |
{java.home}/lib/jaxp.properties
可以在jaxp\.properties
文件中指定系统属性,以定义 JDK 或 JRE 的所有调用的行为。格式为system\-property\-name=value
。例如:
jdk.xml.maxGeneralEntitySizeLimit=1024