Java 操作 XML(14)-

Jackson 除了可以处理 JSON,还可以用来处理 XML(jackson-dataformat-xml  模块),可以轻松完成 Java 对象和 XML 文档的互转;本文主要介绍使用 Jackson 来处理 XML,文中所使用到的软件版本:Java 1.8.0_321、Jackson 2.13.3。

1、简介

jackson-dataformat-xml 模拟 JAXB “代码优先” 的数据绑定方式,提供低级以及高级的方法来完成数据绑定工作。值得注意的是,jackson-dataformat-xml 的目标不是完整的 JAXB 克隆,或者成为一个通用的 XML 工具包。具体来说:

  • While XML serialization should ideally be similar to JAXB output, deviations are not automatically considered flaws (there are reasons for some differences)
  • What should be guaranteed is that any XML written using this module must be readable using module as well (“read what I wrote”): that is, we do aim for full round-trip support
  • From above: there are XML constructs that module will not be able to handle; including some cases JAXB (and other Java XML libraries) supports
  • This module also support constructs and use cases JAXB does not handle: specifically, rich type and object id support of Jackson are supported.

详情可参考官网文档:https://github.com/FasterXML/jackson-dataformat-xml.

2、Jackson 配置

处理 XML 的 XMLMapper 对象继承自处理 JSON 的 ObjectMapper 对象,因此他们的配置是类似的,具体可参考:Java 操作 JSON 数据(4)–Jackson 操作 JSON 数据。这里列出仅针对 XML 处理的注解:

注解 作用域 说明 实现时机
@JacksonXmlRootElement 类上 指定 XML 根标签的名字 序列化时
@JacksonXmlProperty 属性或getter/setter方法上 指定属性对应 XML 映射的名称 序列化和反序列化时
@JacksonXmlText 属性或getter/setter方法上 将属性直接作为未被标签包裹的普通文本 序列化和反序列化时
@JacksonXmlCData 属性或getter/setter方法上 将属性值包裹在 CDATA 标签中 序列化时
@JacksonXmlElementWrapper 属性或getter/setter方法上 类中有集合的属性时,是否生成包裹的标签 序列化时

3、具体使用

3.1、引入依赖

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.13.3</version>
</dependency>
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » Java 操作 XML(14)-