问题描述
我有一个 XML 文档,其中包含不应被解释为 XML 标签的嵌套标签
例如这样的事情
<something>cba<a href="linktosomething.com">abc</a></something>
应该被解析为一个普通的字符串 "cba<a href="linktosomething.com">abc</a>"
(应该提到文档还有其他元素可以很好地解析)。 Jackson tho 试图将其解释为 Object,但我不知道如何防止这种情况发生。我尝试使用 @JacksonXmlText
,关闭包装和自定义解串器,但我没有让它工作。
解决方法
<a
应转换为 <a
。这种来回转换通常发生在每个 XML API 中,设置和获取文本将使用这些实体 &...;
。
另一种选择是使用额外的 CDATA 部分:<![CDATA[ ... ]]>
。
<something><![CDATA[cba<a href="linktosomething.com">abc</a>]]></something>
如果您无法纠正该问题,并且不得不忍受已经损坏的 XML 文本,您必须自己动手:
- 在字符串中加载错误的 XML
- 修复 XML
- 将 XML 字符串传递给 jackson
修复:
String xml = ...
xml = xml.replaceAll("<(/?a\\b[^>]*)>","<$1>"); // Links
StringReader in = new StringReader(xml);