com.thoughtworks.xstream.XStream操作XML和java对象的一些用法
发布时间:2020-12-16 05:44:26 所属栏目:百科 来源:网络整理
导读:概述 XStreamTestjava Birthday Classes ListBean Student 概述 原文链接 :http://www.jb51.cc/article/p-fiymrytd-ez.html 新建包名xml,将下述所有类新建至该文件夹,即可实验运行,有如下几种情况可实验,在main方法中放开注释即可 Java对象转换成XML字符
概述原文链接:http://www.52php.cn/article/p-fiymrytd-ez.html
XStreamTest.javapackage xml;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.thoughtworks.xstream.XStream;
public class XStreamTest {
private XStream xstream = null;
private ObjectOutputStream out = null;
private ObjectInputStream in = null;
private Student bean = null;
public static void main (String[] args) {
XStreamTest test = new XStreamTest();
test.init();
/* Java对象转换成XML字符串 */
//test.writeBean2XML();
/* 将List集合转换成xml文档 */
//test.writeList2XML();
/* Map集合转换xml文档 */
//test.writeMap2XML();
/* 用InputStream将XML文档转换成java对象 */
//test.readXML4InputStream();
/* 将xml文档转换成Java对象 */
test.readXml2Object();
test.destory();
}
/* 将xml文档转换成Java对象 */
public void readXml2Object() {
try {
failRed("-----------Xml >>> Bean--------------");
Student stu = (Student) xstream.fromXML(xstream.toXML(bean));
fail(stu.toString());
List<Student> list = new ArrayList<Student>();
list.add(bean);//add
Map<String,Student> map = new HashMap<String,Student>();
map.put("No.1",bean);//put
bean = new Student();
bean.setAddress("china");
bean.setEmail("tom@125.com");
bean.setId(2);
bean.setName("tom");
Birthday day = new Birthday("2010-11-22");
bean.setBirthday(day);
list.add(bean);//add
map.put("No.2",bean);//put
bean = new Student();
bean.setName("jack");
list.add(bean);//add
map.put("No.3",bean);//put
failRed("==========XML >>> List===========");
List<Student> studetns = (List<Student>) xstream.fromXML(xstream.toXML(list));
fail("size:" + studetns.size());//3
for (Student s : studetns) {
fail(s.toString());
}
failRed("==========XML >>> Map===========");
Map<String,Student> maps = (Map<String,Student>) xstream.fromXML(xstream.toXML(map));
fail("size:" + maps.size());//3
Set<String> key = maps.keySet();
Iterator<String> iter = key.iterator();
while (iter.hasNext()) {
String k = iter.next();
fail(k + ":" + map.get(k));
}
} catch (Exception e) {
e.printStackTrace();
}
}
/** * 用InputStream将XML文档转换成java对象 */
public void readXML4InputStream() {
try {
String s = "<object-stream><xml.Student><id>0</id><name>jack</name>" +
"</xml.Student><xml.Birthday><birthday>2010-05-33</birthday>" +
"</xml.Birthday><byte>22</byte><boolean>true</boolean><float>22.0</float>" +
"<string>hello</string></object-stream>";
failRed("---------ObjectInputStream## XML --> javaObject---------");
StringReader reader = new StringReader(s);
in = xstream.createObjectInputStream(reader);
Student stu = (Student) in.readObject();
Birthday b = (Birthday) in.readObject();
byte i = in.readByte();
boolean bo = in.readBoolean();
float f = in.readFloat();
String str = in.readUTF();
System.out.println(stu);
System.out.println(b);
System.out.println(i);
System.out.println(bo);
System.out.println(f);
System.out.println(str);
} catch (Exception e) {
e.printStackTrace();
}
}
/** * Map集合转换xml文档 */
public void writeMap2XML() {
try {
failRed("---------Map --> XML---------");
Map<String,bean);//put
bean = new Student();
bean.setAddress("china");
bean.setEmail("tom@125.com");
bean.setId(2);
bean.setName("tom");
Birthday day = new Birthday("2010-11-22");
bean.setBirthday(day);
map.put("No.2",bean);//put
bean = new Student();
bean.setName("jack");
map.put("No.3",bean);//put
fail(xstream.toXML(map));
fail("------------转换后--------------");
xstream.alias("student",Student.class);
xstream.alias("key",String.class);
xstream.useAttributeFor(Student.class,"id");
xstream.useAttributeFor("birthday",String.class);
fail(xstream.toXML(map));
} catch (Exception e) {
e.printStackTrace();
}
}
/** * 将List集合转换成xml文档 */
public void writeList2XML() {
try {
//修改元素名称
xstream.alias("beans",ListBean.class);
xstream.alias("student",Student.class);
fail("----------List-->XML----------");
ListBean listBean = new ListBean();
listBean.setName("this is a List Collection");
List<Object> list = new ArrayList<Object>();
list.add(bean);
list.add(bean);//引用bean
//list.add(listBean);//引用listBean,父元素
bean = new Student();
bean.setAddress("china");
bean.setEmail("tom@125.com");
bean.setId(2);
bean.setName("tom");
Birthday day = new Birthday("2010-11-22");
bean.setBirthday(day);
list.add(bean);
listBean.setList(list);
fail("----------原始----------");
fail(xstream.toXML(listBean));
//将ListBean中的集合设置空元素,即不显示集合元素标签
//xstream.addImplicitCollection(ListBean.class,"list");
//设置reference模型
//xstream.setMode(XStream.NO_REFERENCES);//不引用
xstream.setMode(XStream.ID_REFERENCES);//id引用
//xstream.setMode(XStream.XPATH_ABSOLUTE_REFERENCES);//绝对路径引用
//将name设置为父类(Student)的元素的属性
xstream.useAttributeFor(Student.class,"name");
xstream.useAttributeFor(Birthday.class,"birthday");
//修改属性的name
xstream.aliasAttribute("姓名","name");
xstream.aliasField("生日",Birthday.class,"birthday");
fail("----------变化后----------");
fail(xstream.toXML(listBean));
} catch (Exception e) {
e.printStackTrace();
}
}
/** * Java对象转换成XML字符串 */
public void writeBean2XML() {
try {
fail("------------Bean->XML------------");
fail(xstream.toXML(bean));
fail("类重命名后的XML");
/* 类重命名 */
xstream.alias("account",Student.class);
xstream.alias("生日",Birthday.class);
xstream.aliasField("生日",Student.class,"birthday");
xstream.aliasField("生日","birthday");
fail(xstream.toXML(bean));
/* 属性重命名 */
fail("属性重命名后的XML");
xstream.aliasField("邮件","email");
fail(xstream.toXML(bean));
} catch (Exception e) {
e.printStackTrace();
}
}
/** * 初始化资源准备 */
public void init() {
try {
xstream = new XStream();
} catch (Exception e) {
e.printStackTrace();
}
bean = new Student();
bean.setAddress("china");
bean.setEmail("jack@email.com");
bean.setId(1);
bean.setName("jack");
Birthday day = new Birthday();
day.setBirthday("2010-11-22");
bean.setBirthday(day);
}
/** * <b>function:</b>释放对象资源 */
public void destory() {
xstream = null;
bean = null;
try {
if (out != null) {
out.flush();
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException e) {
e.printStackTrace();
}
System.gc();
}
public final void fail(String string) {
System.out.println(string);
}
public final void failRed(String string) {
System.err.println(string);
}
}
Birthdaypackage xml;
public class Birthday {
private String birthday;
public Birthday(String string) {
this.birthday = string;
}
public Birthday() {
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
}
Classespackage xml;
public class Classes {
private Integer num;
public Integer getNum() {
return num;
}
public void setNum(Integer num) {
this.num = num;
}
}
ListBeanpackage xml;
import java.util.List;
public class ListBean {
private String name;
private List<Object> list;
public List<Object> getList() {
return list;
}
public void setList(List<Object> list) {
this.list = list;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Studentpackage xml;
public class Student {
private int id;
private String address;
private String email;
private String name;
private Birthday birthday;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Birthday getBirthday() {
return birthday;
}
public void setBirthday(Birthday birthday) {
this.birthday = birthday;
}
public String toString() {
return this.name + "#" + this.id + "#" + this.address + "#" + this.birthday + "#" + this.email;
}
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |