出于安全原因,我添加了以下语句:

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


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


  25-Nov-2014 09:35:48.802严重[http-nio-8080-exec-14] CIMObject.CIMObjectCollectDataHANA.setRunningXML TransformerConfigurationException setRunningXMLHANA:javax.xml.transform.TransformerConfigurationException:无法在此TransformerFactory上设置功能'http://javax.xml.XMLConstants/property/accessExternalDTD' 。


有人遇到相同的错误并能够解决该错误?

最佳答案

看来问题在于com/sun/org/apache/xalan/internal/utils/FeatureManager.java中未定义该功能。

如果您使用的是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
 }

关于java - 在TransformerFactory中设置功能accessExternalDTD,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27128578/

10-10 05:09