当前位置: 首页 > 知识库问答 >
问题:

(De)用jackson XML序列化混合内容?

段铭晨
2023-03-14

通过我所做的所有搜索,我明白了使用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),我无法更改。

任何帮助都将不胜感激!

共有1个答案

鞠修雅
2023-03-14

您可以尝试使用CDATA:

<![CDATA[<]]>
<![CDATA[>]]>

或者另一种变通方法,例如转义括号,这样“<”就变成了“”等等。

 类似资料:
  • 问题内容: 我想返回一个看起来像这样的结构: 这是一个数组,包括字符串,浮点数和Unicode字符。 如果是Python,我将能够: 但是在Go中,您不能具有混合类型的数组(或切片)。 我想到使用这样的结构: 但是我不希望每个字典都成为字典,我希望每个字典都由3个元素组成。 问题答案: 用 如果要访问存储在其中的值,则必须使用类型断言

  • Appium 的核心理念之一是,你不应该为了测试而改变被测的应用程序。在这种理念中,可以使用像 Selenium 测试 Web 应用的方式去测试混合应用。Appium 需要知道你是想自动化应用的原生部分还是 Web 视图,这在技术上有一点复杂。但值得庆幸的是,我们可以继续使用 Selenium WebDriver 做所有的事。 一旦测试处于 Web 视图上下文之中,所有 Selenium WebD

  • 问题内容: 我希望您能够为我解决有关JAXB的问题提供帮助。 我有以下XML文件: XML可以在属性下包含其他元素(field1,field2),文本或两者。 和以下类: 我想将XML解组到上述类中。我遇到的问题是,在内容列表中,除了文本之外,还有其他字符,例如换行符和制表符。更具体地说,基于上述XML,当我尝试解组时会得到: 内容为[“ \ n \ t \ t”,“ \ n \ t \ t”,“

  • 我希望您能帮助我解决我面临的一个关于JAXB的问题。 我有以下XML文件: XML可以具有适当其他元素(字段1、字段2)、文本或两者。 和以下类: 我想将XML解组到上面的类中。我遇到的问题是,在内容列表中,除了文本之外,还有其他字符,如换行符和制表符。更具体地说,基于上面的XML,当我尝试解组时,我得到: 第一个内容为["\n\t\t","\n\t\t","\n\t"]的道具-它应该是一个空列表

  • 上面的代码不会编译为错误: 错误[E0277]: trait绑定

  • 包装com.company;进口java.io.*; 导入静态com。公司主要的磁盘 公共类存储系统{private static final String FILE_NAME=“D:/Songs.data”; } 无法序列化/反序列化。我有一个应该写入文件然后输出的歌曲列表。我不明白为什么它只读取一首歌。 档案:�Øsrcom。公司歌曲“Ї……ј04јJ L genget Ljava/lang