自定义实体引起的Jackson XML“未声明的通用实体”

问题描述

我正在反序列化一个大型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外部实体注入的安全措施。

  1. 是否可以将这些自定义实体标记为有效?喜欢为他们创建枚举或其他内容吗?
  2. 如果没有,是否有一个标记可以将它们解析为字符串?

更新: 通过基本上在文本文件上执行查找替换,我能够解决此问题。这是一个非常丑陋的解决方案,如果有人有更好的主意,我将不知所措。 :)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)