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

使用Jackson解析混合内容XML元素

宗政永望
2023-03-14

根据这一点,像XML这样的

<root>
  asdasda
  <sub>qwertyuiop</sub>
</root>

但是,将Jackson XmlMapper(默认情况下)用于此类类:

@XmlRootElement
@Getter @Setter
public class Root {
    private String sub;
}

给出一个错误:

com.fasterxml.jackson.databind.exc.未识别属性异常:未识别字段""(类org.example.jackson.unwrap.TestIt1$根),未标记为可忽略(一个已知属性:"sub"])...

好的,我可以补充一下

xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

除根文本“asdasda”外,我将获得其他所有内容。

我应该添加什么来让'asdasda'也出现在类Root的某个字段中,而不是忽略它?

共有1个答案

盖昀
2023-03-14

似乎根本不受支持。从Jackson docs已知的局限性

模型(JsonNode,ObjectMapper.readTree())基于JSON内容模型,它与XML infoset不完全匹配
不支持混合内容(文本内容和作为元素子元素的元素):文本(如果有)将丢失

 类似资料:
  • 通过我所做的所有搜索,我明白了使用jackson序列化/反序列化包含混合内容的xml是有问题的。有人知道用Java处理以下xml的方法吗? 我正在使用以下POJO: 如果节点有混合内容,如上例所示,我将得到以下错误: 如果节点具有纯文本,则反序列化工作。 我尝试使用JsonNode、TextNode、ObjectNode、Object代替String作为数据类型。我尝试了自定义序列化程序和反序列化

  • 谁能帮我找出我在这里做错了什么。我必须解析下面的XML字符串 为此,我有三个bean要映射,如下所示 我试图像下面这样解析 我使用的是jackson-dataformat-xml版本2.9.8。

  • 我尝试使用Jackson编写XML/JSON解析器。我使用支持XML的jackson-dataformat-xml。我需要将其中一个XML元素的内容提取为原始字符串,并将其原样放入POJO中。 你知道更好的办法吗?或者和杰克逊在一起是不可能的?

  • 我的GUI中有一个显示连接状态的显示按钮(带绿色检查的按钮表示连接已建立,带红色表示没有连接)我必须使用我的代码检查状态。我正在解析该特定标题栏类名(容器流体)的内容。由此,我正在解析该显示按钮的显式内容。 在此之后,我解析该按钮的一些显式内容,并确定连接是否存在。 但是如果我使用class="powerOn icon-ok-sign ",我会得到错误: 不允许使用复合类名

  • 问题内容: 这是我的HTML来源 这是我获取内容的Java程序,它过滤HTML标记 是否有使用Jsoup而不是使用Java而不是Regex解析HTML内容的简便方法 有没有办法只获取所需的内容。所以在这里我只需要内容“项目2-222” 问题答案: 尝试使用jsoup轻松解析: 要了解更多信息,请访问Jsoup Docs