Java教程已针对JDK 8编写。本页面中描述的示例和实践不利用后续版本中引入的改进,并且可能使用不再可用的技术。
请参阅Java语言变化了解Java SE 9及其后续版本中更新的语言功能的概述。
请参阅JDK发行说明了解所有JDK版本的新功能、增强功能以及已删除或已弃用选项的信息。
javax.xml.XMLConstants#FEATURE_SECURE_PROCESSING(FSP)是XML处理器(包括DOM、SAX、Schema验证、XSLT和XPath)的必需特性。当设置为true时,建议实现启用上述新属性定义的访问限制。出于兼容性考虑,JAXP 1.5不启用新的限制,尽管DOM、SAX和Schema验证默认情况下FSP为true。
对于JDK 8,当明确设置FSP时,建议将新的accessExternal*属性设置为空字符串。这仅适用于通过API设置FSP的情况,例如factory.setFeature(FSP, true)。尽管DOM、SAX和Schema验证的FSP默认为true,但JDK 8不会将其视为"明确"设置,因此默认情况下不设置限制。
在jaxp.properties文件中指定的属性会影响JDK或JRE的所有调用,并将覆盖其默认值或FEATURE_SECURE_PROCESSING设置的值。
系统属性仅影响一次调用,并将覆盖默认设置、jaxp.properties中设置的值,或FEATURE_SECURE_PROCESSING设置的值。
通过JAXP工厂或SAXParser指定的JAXP属性优先于系统属性、jaxp.properties文件以及javax.xml.XMLConstants#FEATURE_SECURE_PROCESSING。
在以下情况下,新的JAXP属性对其尝试限制的相关结构没有影响:
http://apache.org/xml/features/disallow-doctype-decl true http://apache.org/xml/features/nonvalidating/load-external-dtd false http://xml.org/sax/features/external-general-entities false http://xml.org/sax/features/external-parameter-entities false