Xstream的简单使用

一、简单介绍    
 Xstream是一款简单易用的Xml<->对象的java jar包。可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换; 可以使java程序员在操作Xml、java对象相互转换中避免许多繁杂的工作,提高开发 者的开发效率。并能在项目开发中提供有效的解决方案,比如动态配置等。
二、必要的Jar包   
<a target=_blank href="http://vdisk.weibo.com/s/aTPuwbvX4w8AR" target="_blank">xstream-1.4.2.jar</a>
<a target=_blank href=""https://dl.pandaidea.com/jarfiles/x/xpp3/xpp3.jar.zip">xpp3.jar</a>
三、Xstream的使用
  3.1初始化和实例化
public void init() {
        try {
            xstream = new XStream();
            //xstream = new XStream(new DomDriver()); // 需要xpp3 jar
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    3.2 java bean->xml

public String writeToXml(Object bean){

    return xstream.toXML(bean);
    }

      在main函数中如下执行

     

  XtreamTest test=new XtreamTest();
       test.init();
       Student student =new Student();
       student.setName("Jane");
       student.setAge(12);
       student.setGrade(new Grade("1004班", "李老師"));
       System.out.print(test.writeToXml(student));

   控制台输出如下

<Student>
  <name>Jane</name>
  <age>12</age>
  <grade>
    <name>1004班</name>
    <teacherName>李老師</teacherName>
  </grade>
</Student>



   3.2 list->xml

    在main函数中如下执行   

       Student student =new Student();
       student.setName("Jane");
       student.setAge(12);
       student.setGrade(new Grade("1004班", "李老師"));
       System.out.print(test.writeToXml(student));
       Student student2 =new Student();
       student2.setName("Tom");
       student2.setAge(13);
       student2.setGrade(new Grade("1003班","王老師"));
       List<Student> list=new ArrayList<Student>();
       list.add(student);
       list.add(student2);
       System.out.print(test.writeToXml(list));
控制台输出

<list>
  <student>
    <name>Jane</name>
    <age>12</age>
    <grade>
      <name>1004班</name>
      <teacherName>李老師</teacherName>
    </grade>
  </student>
  <student>
    <name>Tom</name>
    <age>13</age>
    <grade>
      <name>1003班</name>
      <teacherName>王老師</teacherName>
    </grade>
  </student>
</list>

  3.3 map->xml

 Student student =new Student();
       student.setName("Jane");
       student.setAge(12);
       student.setGrade(new Grade("1004班", "李老師"));
       System.out.println(test.writeToXml(student));
       Student student2 =new Student();
       student2.setName("Tom");
       student2.setAge(13);
       student2.setGrade(new Grade("1003班","王老師"));
       Map<String, Student> map = new HashMap<String, Student>();
       map.put("first",student);
       map.put("second",student2);
       System.out.println(test.writeToXml(map));
控制台输出

<map>
  <entry>
    <key>second</key>
    <student>
      <name>Tom</name>
      <age>13</age>
      <grade>
        <name>1003班</name>
        <teacherName>王老師</teacherName>
      </grade>
    </student>
  </entry>
  <entry>
    <key>first</key>
    <student>
      <name>Jane</name>
      <age>12</age>
      <grade>
        <name>1004班</name>
        <teacherName>李老師</teacherName>
      </grade>
    </student>
  </entry>
</map>


4.完整代码

public class XtreamTest {
    private XStream xstream = null;
    private ObjectOutputStream out = null;
    private ObjectInputStream in = null;
    public void init() {
        try {
            xstream = new XStream();
            //xstream = new XStream(new DomDriver()); // 需要xpp3 jar
           /xstream.alias("key",String.class);
            xstream.alias("student", Student.class);
            xstream.alias("grade", Grade.class);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public String writeToXml(Object bean){

    return xstream.toXML(bean);
    }
    public String writeXmlToFile(Object bean ,String filename){
        if(bean instanceof Map){
            try{
                PrintWriter pw=new PrintWriter(filename,"utf-8");
                xstream.toXML(bean,pw);
            }catch (UnsupportedEncodingException e){

            }catch (FileNotFoundException e){

            }
        }
        return filename;

    }
    public Object readMapFromFile(String filename){
        try {     InputStream in=new FileInputStream(new File(filename));
           Object bean=xstream.fromXML(in);
            return bean;
        } catch (FileNotFoundException e){
            e.printStackTrace();
        }
        return null;
    }
   public static void  main(String args[]){

       Student student =new Student();
       student.setName("Jane");
       student.setAge(12);
       student.setGrade(new Grade("1004班", "李老師"));
       System.out.println(test.writeToXml(student));
       Student student2 =new Student();
       student2.setName("Tom");
       student2.setAge(13);
       student2.setGrade(new Grade("1003班","王老師"));
       List<Student> list=new ArrayList<Student>();
       list.add(student);
       list.add(student2);
       System.out.println(test.writeToXml(list));

       Map<String, Student> map = new HashMap<String, Student>();
       map.put("first",student);
       map.put("second",student2);
       System.out.println(test.writeToXml(map));

   }

}


     





    




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值