Jackson-操作XML
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相关推荐
- JAVA操作xml文件
参考:java操作xml方法,总有适合你的 XML技术在Java开发中的应用 1.简介 xml: extensible Markup Language 1.1使用场景: 不同的系统之间交互时使用xml ...
- 使用Dom4j操作XML数据
--------------siwuxie095 dom4j 是一个非常优秀的 Java XML 的 API, 用来读写 XML 文件 和操作 XML 数据 特点:性能优异.功能强大.极端易用 dom ...
- 在C#.net中如何操作XML
在C#.net中如何操作XML 需要添加的命名空间: using System.Xml; 定义几个公共对象: XmlDocument xmldoc ; XmlNode xmlnode ; XmlEle ...
- ActionScript 3操作XML 详解
AS3引入了E4X ,它是根据ECMAScript标准处理XML 数据的全新机制.这使得程序员在程序中无缝地操作XML.在AS3中可以使用XML字面值将XML数据直接写入代码,该字面值将被自动解析. ...
- 我错了,有个叫 SelectSingleNode 的可以操作 xml
我错了,有个叫 SelectSingleNode 的可以操作 xml http://blog.csdn.net/wf520pb/article/details/2644549 ------------ ...
- android xml文件操作类,android操作xml
android操作xml封装后的类,包括创建xml和读xml. public class XmlParserUtil { //创建xml文件 public static void createXmlF ...
- c#操作xml实例 2009-03-13 20:00
在C#.net中如何操作XML 需要添加的命名空间: using System.Xml; 定义几个公共对象: XmlDocument xmldoc ; XmlNode xmlnode ; XmlEle ...
- C#操作XML总结1
C#操作XML总结1 网上很多C#操作XML的文章,但是都是东拼西凑,把简单的问题复杂化,不参考罢了.如若照搬硬套,不但达不到目标,反而浪费时间.原本以前做过操作XML的程序,但是忘了,所以今天下午就 ...
- VC++中操作XML(MFC、SDK)
VC++中操作XML(MFC.SDK) XML在Win32程序方面应该没有在Web方面应用得多,很多Win32程序也只是用XML来存存配置信息而已,而且没有足够的好处的话还不如用ini.VC++里操作 ...
- Repeater、GridView等 操作XML
Repeater.GridView等 操作XML文件 在项目中需要对XML文件进行管理,我用了Repeater 的方式来实现了实时的更新 希望对阅读这篇随笔的您有所帮助,我用的Repeater,您也可 ...
最新文章
- C#ListView控件添加Checkbox复选框并获取选中的数目,检查checkbox是否勾选
- Java网络编程及安全
- Python容器类型公共方法汇总
- vue js 定义对象_JS标准内置对象Proxy及Vue中的proxy.js文件
- Java黑皮书课后题第6章:**6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数。编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开
- 运维人员打字耍不要快_法考经验与教训 —— 打字
- 解密SVM系列(二):SVM的理论基础(转载)
- 评论:互联网的冬天还有多远?
- C#LeetCode刷题之#453-最小移动次数使数组元素相等(Minimum Moves to Equal Array Elements)
- Android基础巩固进阶
- 2020-12-16子类对象指针强转成父类对象指针,父类对象指针调用子类函数问题(待整理)
- jmeter接口压力测试详解
- 【JAVA】数据结构——二叉树 例题练习及代码详解
- Java导入导出Excel控件简介
- Linux内核4.14版本——alsa框架分析(3)-PCM设备的创建
- python如何设置矩阵_Python Numpy如何操作数组和矩阵
- 树莓派4B安装QT5
- 微信公众号可以关联多少个小程序?
- Unity优化之Graphics相关
- Oracle Rac 添加节点测试笔记
热门文章
- 使用Eclipse JEE+Mtj+Nokia S60 V3SDK开发J2ME应用的环境搭建
- 英国《金融时报》:全力加码早期投资,红杉中国在下一盘怎样的棋?...
- 求生之路2升级补丁及完整版下载
- 阀门的开关方向_阀门的开关方向如何正确操作阀门
- 2012年9月8日参加中国软件开发者大会学习笔记
- 谷露Gllue联合领英LinkedIn,发布猎头行业中高端招聘大数据观察
- VSO Downloader 【您连接到互联网的网络适配器没有启动自动检测 】解决办法
- Linux查看pcie槽位
- java流式上传下载_精讲RestTemplate第6篇-文件上传下载与大文件流式下载
- python中plotly绘制树地图_聚类分析python画树状图--Plotly(dendrogram)用法解析 - 人人都是架构师...