在TransformerFactory中设置functionaccessExternalDTD

出于安全原因,我正在添加声明:

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

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

25-Nov-2014 09:35:48.802 SEVERE [http-nio-8080-exec-14] CIMObject.CIMObjectCollectDataHANA.setRunningXML TransformerConfigurationException setRunningXMLHANA:javax.xml.transform.TransformerConfigurationException:无法设置function’ http://javax.xml此TransformerFactory上的.XMLConstants / property / accessExternalDTD ‘。

有人遇到了同样的错误并且能够修复它吗?

看来问题是com/sun/org/apache/xalan/internal/utils/FeatureManager.java没有定义这样的function。

如果您使用的是java 8,那么您需要做的就是调用:

transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);

这是因为在com/sun/org/apache/xalan/internal/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 }