通过我所做的所有搜索,我了解到使用混合内容的杰克逊对 xml 进行序列化/反序列化是有问题的。有人知道使用 Java 处理以下 xml 的方法吗?
<xmlsample>
<title>Yada yada yada <a href=\"component:tcm:757-228001\" id=\"Link_1492103133595\" title=\"yada\" name=\"Link_1492103133595\" xmlns=\"xhtml\">yada</a> yada</title>
<link>test</link>
</xmlsample>
我正在使用以下 POJO:
@JacksonXmlRootElement(localName="xmlsample")
public class XmlSample{
private String title;
private String link;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
}
如果节点有混合内容,如上面的例子,我会得到以下错误:
java.io.IOException: Expected END_ELEMENT, got event of type 1
如果节点有纯文本,则反序列化有效。
我尝试使用 JsonNode、TextNode、ObjectNode、Object 而不是 String 作为数据类型。我尝试了自定义序列化器和反序列化器,但错误仍然存在。事实上,如果节点中有 html,则处理不会到达自定义反序列化器。
此 xml 来自我无法更改的第 3 方系统 (SDL Tridion)。
任何帮助将不胜感激!
编辑:我需要澄清该节点可以包含标记或可以包含纯文本,因此我无法创建代表您在上面的 xml 中看到的标记的 POJO。并且其中的标记也可能比上面的示例复杂得多。这就是为什么我只是试图将它强制转换为字符串。我不需要操作它,我只需要将它保存在 POJO 中,这样它就可以原封不动地返回到数据库中。