网上很多讲述使用XStream来映射xml文件到java对象的文章,但是几乎没有一篇文章讲述,如何使用XStream来映射xml中的同级的列表元素到java对象的文章。本文示例中将使用XStream 1.3.1。请去XStream的官方站点上下载相应的包。
在Eclipse中新建一个Java Project,然后引入XStream的包:xstream-1.3.1.jar和xpp3-min-1.1.4c.jar。在这里使用xpp的xml解析技术来解析xml,而不是传统的DOM或者sax来进行xml的解析。
在src下新建sample.xml文件。代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<person id="1" name="sample">
<wife name="wife_name" age="25"></wife>
<house name="house1" address="address1"></house>
<house name="house1" address="address1"></house>
<house name="house1" address="address1"></house>
<house name="house1" address="address1"></house>
</person>
新建House类来映射house元素,House类的源代码如下:
public class House {
private String name = "";
private String address = "";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
新建Wife类来映射wife标签,源代码如下:
public class Wife {
private String name = "";
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
新建Person类来映射person元素,源代码如下:
import java.util.List;
public class Person {
private int id;
private String name;
private Wife wife;
private List<House> houseList;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Wife getWife() {
return wife;
}
public void setWife(Wife wife) {
this.wife = wife;
}
public List<House> getHouseList() {
return houseList;
}
public void setHouseList(List<House> houseList) {
this.houseList = houseList;
}
}
新建TestMain方法,包含main方法。首先,构建XStream的实例:
XStream xstream = new XStream();
然后,就是配置xml文件和java对象之间的映射,源代码如下:
xstream.alias("person", Person.class);
xstream.aliasAttribute(Person.class, "id", "id");
xstream.aliasAttribute(Person.class, "name", "name");
xstream.alias("wife", Wife.class);
xstream.aliasAttribute(Wife.class, "name", "name");
xstream.addImplicitCollection(Person.class, "houseList");
xstream.alias("house", House.class);
xstream.aliasAttribute(House.class,"name", "name");
xstream.aliasAttribute(House.class, "address", "address");
注意代码中的这句“xstream.addImplicitCollection(Person.class, "houseList");”,如果不加,xml配置文件的house元素将作为houselist的子元素。将变成
<houseList>
<house name="house1" address="address1"></house>
<house name="house1" address="address1"></house>
<house name="house1" address="address1"></house>
<house name="house1" address="address1"></house>
</houseList>
。
最后,使用XStream.fromXML来将对应的xml转化成java对象。代码如下:
Person person = (Person)xstream.fromXML(TestMain.class.getClassLoader()
.getResourceAsStream("sample.xml"));
由于sample.xml文件位于classpath下,所以使用了ClassLoader来加载sample.xml。
测试代码如下:
System.out.println("[person.name=" + person.getName() + "]");
System.out.println("[wife.name=" + person.getWife().getName() + ", wife.age=" + person.getWife().getAge() + "]");
System.out.println("[person.houseList.size=" + person.getHouseList().size() + "]");
System.out.println("[person.houseList.house1.name=" + person.getHouseList().get(0).getName() + ",address=" + person.getHouseList().get(0).getAddress() +"]");
测试结果如下:
[person.name=sample]
[wife.name=wife_name, wife.age=0]
[person.houseList.size=4]
person.houseList.house1.name=house1,address=address1]
分享到:
相关推荐
xstream轻松解析xml到java对象,内附样例。so easy!妈妈再也不用担心我的xml解析。
使用 XStream 不用任何映射就能实现多数 Java 对象的序列化。在生成的 XML 中对象名变成了元素名,类中的字符串组成了 XML 中的元素内容。使用 XStream 序列化的类不需要实现 Serializable 接口。XStream 是一种序列...
xStream完美转换XML、JSON,包括XML转换成对象,以及对象转换成XML,以及对象转换成JSON,以及注意事项
但是当对象和字段名与XML中的元素名不同时,XStream支持指定别名。XStream支持以方法调用的方式,或是Java 标注的方式指定别名。 XStream在进行数据类型转换时,使用系统缺省的类型转换器。同时,也支持用户自定义...
Xstream_java对象和xml的互相转换
使用xstream进行java类与xml文件互转解析
这个是 对于要把数据库获得的 list 转换成 xml 有了XStream在Java对象和XML之间相互转换 就变得非常容易了 嘿嘿
webService接口对接时,需要传递一个xml内容。用xStream拼接xml
Java对象转换成XML字符串 将List集合转换成xml文档 Map集合转换xml文档 用InputStream将XML文档转换成java对象
XStream测试Demo-xml与java对象的相互转换
好用的xStream XML和JAVA对象互相转换的简单示例,内附依赖的xstream-1.3.1.jar和xpp3_min-1.1.4c.jar
一个小demo展示xml的两种解析方式和四种解析方法,以及使用XStream进行javaBean与xml、json之间的转换
NULL 博文链接:https://forestqqqq.iteye.com/blog/1993210
java中对象与xml转换,实例带完整源码
NULL 博文链接:https://forestqqqq.iteye.com/blog/1996095
有jar包。在附件。全的,代码也有,,直接运行
Xstream生产xml和解析xml
xStream xml to bean,使用xStream 互转 xml 、bean. 的一个工具类。
xstream 将xml文档转换成 java对象,然后就可以利用json库转成json对象啦。