传送门查看JAXB实现XML与Obj互相转换:https://blog.youkuaiyun.com/qq_39234840/article/details/96278713
使用xStream解析XML到对象
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.10</version>
</dependency>
获取到的xml
<?xml version="1.0" encoding="GBK" standalone="yes"?>
<Data>
<Head>
<occ01>1</occ01>
<occ02>内部客户</occ02>
<occ18>内部客户</occ18>
<occacti>Y</occacti>
<occdate>2019-04-11</occdate>
</Head>
<Head>
<occ01>2</occ01>
<occ02>临时客户</occ02>
<occ18>临时客户</occ18>
<occacti>Y</occacti>
<occdate>2019-04-11</occdate>
</Head>
<Head>
<occ01>3</occ01>
<occ02>其他个人</occ02>
<occ18>其他个人</occ18>
<occacti>Y</occacti>
<occdate>2019-04-30</occdate>
</Head>
</Data>
实体类
@Data
public class TestXmlClass {
private String occ01;
private String occ02;
private String occ18;
private String occacti;
private String occdate;
}
@Data
@XStreamAlias("Data")
public class DataList {
@XStreamImplicit(itemFieldName = "Head")
private List<TestXmlClass> list;
}
实现代码
//创建xstream对象
XStream xStream = new XStream();
xStream.processAnnotations(DataList.class);
//将字符串类型的xml转换为对象
DataList dataList= (DataList)xStream.fromXML(new URL("http://192.168.0.220/cgi-bin/out/test.xml"));
System.out.println(dataList.toString());
其他xml例子
demo
<?xml version="1.0" encoding="GBK" standalone="yes"?>
<Data>
<Head index="1">
<user name="1">1</occ01>
<user name="1">内部客户</occ02>
<user name="1">内部客户</occ18>
<user name="1">Y</occacti>
<user name="1">2019-04-11</occdate>
</Head>
<Head index="2">
<user name="1">2</occ01>
<user name="1">临时客户</occ02>
<user name="1">临时客户</occ18>
<user name="1">Y</occacti>
<user name="1">2019-04-11</occdate>
</Head>
</Data>
@XStreamAlias("user")
@XStreamConverter(CarAttrConverter.class)
public class User {
//没有使用注解
private String name;
private String value;
}
@Data
@XStreamAlias("Head")
public class Head{
@XStreamImplicit(itemFieldName = "user")
private List<User> list;
}
@Data
@XStreamAlias("Data")
public class DataList{
@XStreamImplicit(itemFieldName = "Head")
private List<TestXmlClass> list;
}
//创建xstream对象
XStream xStream = new XStream();
xstream.autodetectAnnotations(true);
xstream.processAnnotations(DataList.class);
DataList dataList= (DataList)xStream.fromXML(new URL("http://192.168.0.220/cgi-bin/out/test.xml"));