提问者:小点点

在TransformerFactory中设置功能访问ExternalDTD


出于安全原因,我添加了以下声明:

transformerFactory.setFeature("http://javax.xml.XMLConstants/property/accessExternalDTD", false);

但是,我在日志文件中收到以下错误:

25-Nov-2014 09:35:48.802 SEVERE[超文本传输协议-nio-8080-exec-14]CIMObject.CIMObjectCollectDataHANA.setRunningXML TransformerConfigurationException setRunningXMLHANA:javax.xml.transform.TransformerConfigurationException:无法在此TransformerFactory上设置超文本传输协议://javax.xml.XMLCon这样的特性。

有人经历了同样的错误并能够修复它?


共1个答案

匿名用户

问题似乎是这样的功能没有在com/sun/org/apache/xalan/内部/utils/FeatureManager.java中定义。

如果您正在使用java8,那么您需要做的就是调用:

transformerFactory. setFeature(XML常量.FEATURE_SECURE_PROCESSING,true);

这是因为在com/sun/org/apache/xalan/内部/xsltctrax/TransformerFactoryImpl.java中:

if (value && XalanConstants.IS_JDK8_OR_ABOVE) {
    _xmlSecurityPropertyMgr.setValue(
         Property.ACCESS_EXTERNAL_DTD, 
         State.FSP, 
         XalanConstants.EXTERNAL_ACCESS_DEFAULT_FSP
    ); // ACCESS_EXTERNAL_DTD is disabled by setting to the default value
 }