通过我所做的所有搜索,我理解使用混合内容的jackson序列化/反序列化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来自第三方系统(SDL Tridion),我无法改变。
非常感谢任何帮助!
编辑:我需要澄清节点可能包含标记或者可能包含纯文本,因此我无法创建代表标记的POJO,就像您在上面的xml中看到的那样。而且标记也可能比上面的例子复杂得多。这就是为什么我只是想把它强制成一个String。我不需要操作它,我只需要在POJO中保存它,这样就可以不加改变地返回数据库。