【发布时间】:2015-07-07 13:51:03
【问题描述】:
在jdk1.6中,我正在设置
transformerFactory.setFeature(XMLConstants.ACCESS_EXTERNAL_DTD, false)
我面临以下错误:
javax.xml.transform.TransformerConfigurationException:无法在此 TransformerFactory 上设置功能“http://javax.xml.XMLConstants/property/accessExternalDTD”。 在 org.apache.xalan.processor.TransformerFactoryImpl.setFeature(TransformerFactoryImpl.java:418)
和我在这里找到的一样:How to prevent xalan.jar that has META-INF\services\javax.xml.transform.TransformerFactory from taking over JDK 1.6 built in Xalan implementation? 我无法在此处进行建议的更改,因为我的管理员会审查其他 API 冲突。
并根据此链接:http://xml.apache.org/xalan-j/features.html#domsource
您可以使用TransformerFactory.setFeature(String, boolean) 方法来设置特征的值。 Xalan-Java 仅支持XMLConstants.FEATURE_SECURE_PROCESSING 功能的设置。对于所有其他功能,TransformerFactory 会公开它们的值,但不能更改它们的状态。
因此,如果使用 TransormerFactory 的 xalan 实现,我们似乎只能设置此功能。
transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
最后我的问题: 如果我们设置功能:
transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
然后是其他功能(XMLConstants.ACCESS_EXTERNAL_DTD)自动设置为 false。
我从我设置的日志中将上述功能设为“假”。
但我想确定accessExternalDTD 功能是否默认设置为false,或者安全处理功能是否设置为true。
【问题讨论】: