使用xStream解析XML到对象

本文介绍使用XStream库解析特定格式的XML文件,并将其转换为Java对象的过程。包括依赖配置、XML样本、对应的Java实体类定义及转换代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

传送门查看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"));

 

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值