我正在反序列化一个大型XML文件(不是我的),它包含定义为以下内容的自定义实体:
<!ENTITY math "mathematics">
和元素以这种方式使用:
<field>&math;</field>
当我尝试通过以下方式反序列化时:
XmlMapper xmlMapper = new XmlMapper();
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
return xmlMapper.readValue(classloader.getResourceAsStream("file.xml"), MyClass.class);
我收到此错误: com.fasterxml.jackson.databind.JsonMappingException:未声明的通用实体“数学”
我认为这可能是防止Xml外部实体注入的安全措施。
更新: 通过基本上在文本文件上执行查找替换,我能够解决此问题。这是一个非常丑陋的解决方案,如果有人有更好的主意,我将不知所措。 :)