xml格式转为object对象,分三种情况:
1、常规标签格式转化
2、标签属性格式转化
3、两种方式相结合的xml格式转化
备注:需要用到的jar包 xstream,xpp3
一、常规标签格式转化
主要使用xstream中 @XStreamAlias 标签,将xml标签和实体类属性进行一一对应后,使用util类转化方法进行转化即可。
xml格式如下:
1 | <User> |
User.java
1 | ("User") |
转化方式:
1 | User user = XmlUtils.xmlToObject(xmlStr); |
二、标签属性格式转化
主要使用xstream中 @XStreamAsAttribute 和 @XStreamImplicit 标签,将xml标签的属性和实体类属性进行一一对应后进行转化即可。
xml格式如下:
1 |
|
Info.java
最外层标签使用 @XStreamAlias 对应实体类名
标签属性使用 @XStreamAsAttribute 对应实体类属性(字段名称必须一致)
内层集合标签使用 @XStreamImplicit(itemFieldName = “log”) 对应实体类集合属性
1 | ("info") |
Log.java
1 | ("log") |
转化方法
因为实体类属性不能使用”-“这类特殊符号,所以讲xml读取后要将带有”-“的字段进行转化(如User-Agent转为userAgent,转化后的字段保持与实体类字段一致即可)
1 | XStream xstream = new XStream(new DomDriver()); |
三、两种xml格式相结合的xml转化
xml样例如下:
1 |
|
此时只需针对内层的标签添加 @XStreamAlias 对应实体类属性名即可
更改后的Log.java
1 | ("log") |
四、自定义xml解析(性能最好)
引入maven依赖
1 | <dependency> |
代码示例
1 | private HttpInfoVo getLogsByXml(String line) { |