本文介紹了(反)使用Jackson XML序列化混合內(nèi)容?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
通過我所做的所有搜索,我知道使用Jackson序列化/反序列化具有混合內(nèi)容的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;
}
}
如果節(jié)點包含混合內(nèi)容,如上例所示,我將收到以下錯誤:
java.io.IOException: Expected END_ELEMENT, got event of type 1
如果節(jié)點為純文本,則反序列化有效。
我嘗試使用JsonNode、TextNode、ObjectNode、Object代替String作為數(shù)據(jù)類型。我嘗試了自定義序列化程序和反序列化程序,但錯誤仍然存在。事實上,如果節(jié)點中有html,則處理不會到達自定義反序列化程序。
此XML來自我無法更改的第三方系統(tǒng)(SDL Tridion)。
如有任何幫助,我們將不勝感激!
編輯:我需要澄清節(jié)點可以包含標記,也可以包含純文本,因此我不能創(chuàng)建表示您在上面的XML中看到的標記的POJO。中的標記也可能比上面的示例復(fù)雜得多。這就是為什么我只是想把它強迫成一串。我不需要操作它,我只需要將它保存在POJO中,這樣它就可以原封不動地返回到數(shù)據(jù)庫。
推薦答案
您可以嘗試使用CDATA:
<![CDATA[<]]>
<![CDATA[>]]>
或其他解決辦法,例如轉(zhuǎn)義括號,因此&qot;<;";變成";<
";等等.
這篇關(guān)于(反)使用Jackson XML序列化混合內(nèi)容?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,