加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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字符
  • 概述
  • XStreamTestjava
  • Birthday
  • Classes
  • ListBean
  • Student

概述

原文链接:http://www.52php.cn/article/p-fiymrytd-ez.html
新建包名xml,将下述所有类新建至该文件夹,即可实验运行,有如下几种情况可实验,在main方法中放开注释即可

  • Java对象转换成XML字符串
  • 将List集合转换成xml文档
  • Map集合转换xml文档
  • 用InputStream将XML文档转换成java对象
  • 将xml文档转换成Java对象

XStreamTest.java

package 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);
    }
}

Birthday

package 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;
    }


}

Classes

package xml;

public class Classes {

    private Integer num;

    public Integer getNum() {
        return num;
    }

    public void setNum(Integer num) {
        this.num = num;
    }
}

ListBean

package 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;
}

}

Student

package 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;
    }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读