出于安全原因,我添加了以下声明:
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这样的特性。
有人经历了同样的错误并能够修复它?
问题似乎是这样的功能没有在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
}