Jackson-操作XML

概述

Jackson是一个处理JSON的类库,不过它也通过jackson-dataformat-xml包提供了处理XML的功能。Jackson建议我们在处理XML的时候使用woodstox-core包,它是一个XML的实现,比JDK自带XML实现更加高效,也更加安全。

Jackson常用注解

1、@JacksonXmlRootElement

@JacksonXmlRootElement注解有两个属性:

  • namespace属性:用于指定XML根元素命名空间的名称。
  • localname属性:用于指定XML根元素节点标签的名称。

2、@JacksonXmlProperty

@JacksonXmlProperty注解有三个属性,namespace和localname属性用于指定XML命名空间的名称,isAttribute指定该属性作为XML的属性()还是作为子标签().

3、@JacksonXmlText

@JacksonXmlText注解将属性直接作为未被标签包裹的普通文本表现。

4、@JacksonXmlCData

@JacksonXmlCData将属性包裹在CDATA标签中。

5、@JsonPropertyOrder

@JsonPropertyOrder和@JsonProperty的index属性类似,指定属性序列化时的顺序。

6、@JsonIgnore

@JsonIgnore注解用于排除某个属性,这样该属性就不会被Jackson序列化和反序列化。

7、@JsonIgnoreProperties

@JsonIgnoreProperties注解是类注解。在序列化为JSON的时候,@JsonIgnoreProperties({“prop1”, “prop2”})会忽略pro1和pro2两个属性。

在从JSON反序列化为Java类的时候,@JsonIgnoreProperties(ignoreUnknown=true)会忽略所有没有Getter和Setter的属性。该注解在Java类和JSON不完全匹配的时候很有用。

集合元素的映射

@JacksonXmlElementWrapper

@JacksonXmlElementWrapper可以将列表数据转为XML节点。

demo代码

Java对象转XML

新建一个Java类

Data
@JacksonXmlRootElement(localName = "CMD")
public class RootXml {/*** Valid注解作用是为了保证层级嵌套验证成功*/@Valid@JacksonXmlProperty(localName = "eb")private Eb eb;@Datapublic static class Eb {/*** PUB头*/@Validprivate Pub pub;/*** in*/@Validprivate In in;}@Data@Accessors(chain = true)public static class Pub {/*** 交易代码*/@NotBlank(message = "交易代码不能为空")@JacksonXmlProperty(localName = "TransCode")private String transCode;/*** 集团CIS号* 客户注册时的归属编码*/@NotBlank(message = "集团CIS号不能为空")@JacksonXmlProperty(localName = "CIS")private String cis;/*** 归属银行编号* 客户注册时的归属单位*/@NotBlank(message = "归属银行编号不能为空")@JacksonXmlProperty(localName = "BankCode")private String bankCode;/*** 证书ID* 无证书客户可上送空*/@JacksonXmlProperty(localName = "ID")private String id;/*** 交易日期* ERP系统产生的交易日期,格式是yyyyMMdd*/@JacksonXmlProperty(localName = "TranDate")private String tranDate;/*** 交易时间* ERP系统产生的交易时间,格式如HHmmssSSS,精确到毫秒*/@JacksonXmlProperty(localName = "TranTime")private String tranTime;/*** 指令包序列号* ERP系统产生的指令包序列号,一个集团永远不能重复*/@NotBlank(message = "指令包序列号不能为空")@JacksonXmlProperty(localName = "fSeqno")private String sequence;}@Datapublic static class In {@JacksonXmlProperty(localName = "AccNo")private String accountNo;@JacksonXmlProperty(localName = "AreaCode")private String areaCode;@JacksonXmlProperty(localName = "MinAmt")private String minAmount;@JacksonXmlProperty(localName = "MaxAmt")private String maxAmount;@JacksonXmlProperty(localName = "BeginTime")private String beginTime;@JacksonXmlProperty(localName = "EndTime")private String endTime;@JacksonXmlProperty(localName = "NextTag")private String nextTag;}@Overridepublic String toString() {return XmlUtils.asString(this);}
}

Java转XML代码:

public static String beanToXml() {RootXml.Pub pub = new RootXml.Pub();pub.setTransCode("transCode");pub.setBankCode("bankCode");pub.setId("id");RootXml.In in = new In();in.setAccountNo("account");in.setAreaCode("areaCode");RootXml.Eb eb = new RootXml.Eb();eb.setIn(in);eb.setPub(pub);RootXml rootXml = new RootXml();rootXml.setEb(eb);return XmlUtils.asString(rootXml);
}

转化结果:

<CMDxmlns=""><eb><pub><TransCode>transCode</TransCode><CIS/><BankCode>bankCode</BankCode><ID>id</ID><TranDate/><TranTime/><fSeqno/></pub><in><AccNo>account</AccNo><AreaCode>areaCode</AreaCode><MinAmt/><MaxAmt/><BeginTime/><EndTime/><NextTag/></in></eb>
</CMD>

XML转Java对象

XML字符串:

<CMDxmlns=""><eb><pub><TransCode>transCode</TransCode><CIS/><BankCode>bankCode</BankCode><ID>id</ID><TranDate/><TranTime/><fSeqno/></pub><in><AccNo>account</AccNo><AreaCode>areaCode</AreaCode><MinAmt/><MaxAmt/><BeginTime/><EndTime/><NextTag/></in></eb>
</CMD>

XML转化为Java对象代码

 public static void xmlToBean(String xml) {XmlMapper xmlMapper = new XmlMapper();try {RootXml rootXml = xmlMapper.readValue(xml, RootXml.class);System.out.println();System.out.println(rootXml.toString());} catch (Exception e) {System.out.println("xml转Bean时发生错误:" + e.getMessage());throw new RuntimeException(e);}
}

Jackson-操作XML相关推荐

  1. JAVA操作xml文件

    参考:java操作xml方法,总有适合你的 XML技术在Java开发中的应用 1.简介 xml: extensible Markup Language 1.1使用场景: 不同的系统之间交互时使用xml ...

  2. 使用Dom4j操作XML数据

    --------------siwuxie095 dom4j 是一个非常优秀的 Java XML 的 API, 用来读写 XML 文件 和操作 XML 数据 特点:性能优异.功能强大.极端易用 dom ...

  3. 在C#.net中如何操作XML

    在C#.net中如何操作XML 需要添加的命名空间: using System.Xml; 定义几个公共对象: XmlDocument xmldoc ; XmlNode xmlnode ; XmlEle ...

  4. ActionScript 3操作XML 详解

    AS3引入了E4X ,它是根据ECMAScript标准处理XML 数据的全新机制.这使得程序员在程序中无缝地操作XML.在AS3中可以使用XML字面值将XML数据直接写入代码,该字面值将被自动解析. ...

  5. 我错了,有个叫 SelectSingleNode 的可以操作 xml

    我错了,有个叫 SelectSingleNode 的可以操作 xml http://blog.csdn.net/wf520pb/article/details/2644549 ------------ ...

  6. android xml文件操作类,android操作xml

    android操作xml封装后的类,包括创建xml和读xml. public class XmlParserUtil { //创建xml文件 public static void createXmlF ...

  7. c#操作xml实例 2009-03-13 20:00

    在C#.net中如何操作XML 需要添加的命名空间: using System.Xml; 定义几个公共对象: XmlDocument xmldoc ; XmlNode xmlnode ; XmlEle ...

  8. C#操作XML总结1

    C#操作XML总结1 网上很多C#操作XML的文章,但是都是东拼西凑,把简单的问题复杂化,不参考罢了.如若照搬硬套,不但达不到目标,反而浪费时间.原本以前做过操作XML的程序,但是忘了,所以今天下午就 ...

  9. VC++中操作XML(MFC、SDK)

    VC++中操作XML(MFC.SDK) XML在Win32程序方面应该没有在Web方面应用得多,很多Win32程序也只是用XML来存存配置信息而已,而且没有足够的好处的话还不如用ini.VC++里操作 ...

  10. Repeater、GridView等 操作XML

    Repeater.GridView等 操作XML文件 在项目中需要对XML文件进行管理,我用了Repeater 的方式来实现了实时的更新 希望对阅读这篇随笔的您有所帮助,我用的Repeater,您也可 ...

最新文章

  1. C#ListView控件添加Checkbox复选框并获取选中的数目,检查checkbox是否勾选
  2. Java网络编程及安全
  3. Python容器类型公共方法汇总
  4. vue js 定义对象_JS标准内置对象Proxy及Vue中的proxy.js文件
  5. Java黑皮书课后题第6章:**6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数。编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开
  6. 运维人员打字耍不要快_法考经验与教训 —— 打字
  7. 解密SVM系列(二):SVM的理论基础(转载)
  8. 评论:互联网的冬天还有多远?
  9. C#LeetCode刷题之#453-最小移动次数使数组元素相等(Minimum Moves to Equal Array Elements)
  10. Android基础巩固进阶
  11. 2020-12-16子类对象指针强转成父类对象指针,父类对象指针调用子类函数问题(待整理)
  12. jmeter接口压力测试详解
  13. 【JAVA】数据结构——二叉树 例题练习及代码详解
  14. Java导入导出Excel控件简介
  15. Linux内核4.14版本——alsa框架分析(3)-PCM设备的创建
  16. python如何设置矩阵_Python Numpy如何操作数组和矩阵
  17. 树莓派4B安装QT5
  18. 微信公众号可以关联多少个小程序?
  19. Unity优化之Graphics相关
  20. Oracle Rac 添加节点测试笔记

热门文章

  1. 使用Eclipse JEE+Mtj+Nokia S60 V3SDK开发J2ME应用的环境搭建
  2. 英国《金融时报》:全力加码早期投资,红杉中国在下一盘怎样的棋?...
  3. 求生之路2升级补丁及完整版下载
  4. 阀门的开关方向_阀门的开关方向如何正确操作阀门
  5. 2012年9月8日参加中国软件开发者大会学习笔记
  6. 谷露Gllue联合领英LinkedIn,发布猎头行业中高端招聘大数据观察
  7. VSO Downloader 【您连接到互联网的网络适配器没有启动自动检测 】解决办法
  8. Linux查看pcie槽位
  9. java流式上传下载_精讲RestTemplate第6篇-文件上传下载与大文件流式下载
  10. python中plotly绘制树地图_聚类分析python画树状图--Plotly(dendrogram)用法解析 - 人人都是架构师...