zoukankan      html  css  js  c++  java
  • XStream简单使用01——xml和Ojbect互转

      1 package org.zhb.test;
      2 /**
      3  * author : zhb 
      4  * data   : 2014-2-14
      5  * use packages:
      6  *      xmlpull-1.1.3.1.jar
      7  *   xpp3_min-1.1.4c.jar
      8  *   xstream-1.4.7.jar
      9  */
     10 import java.io.File;
     11 import java.io.FileInputStream;
     12 import java.io.FileOutputStream;
     13 import java.io.FileWriter;
     14 import java.io.InputStreamReader;
     15 import java.io.OutputStreamWriter;
     16 
     17 import com.thoughtworks.xstream.XStream;
     18 
     19 class Person{
     20     private String name;
     21     private int age;
     22     private String gender;
     23     private Dog dog;
     24     public String getName() {
     25         return name;
     26     }
     27     public void setName(String name) {
     28         this.name = name;
     29     }
     30     public Person(){};
     31     public Person(String name, int age, String gender, Dog dog) {
     32         this.name = name;
     33         this.age = age;
     34         this.gender = gender;
     35         this.dog = dog;
     36     }
     37     public int getAge() {
     38         return age;
     39     }
     40     public void setAge(int age) {
     41         this.age = age;
     42     }
     43     public String getGender() {
     44         return gender;
     45     }
     46     public void setGender(String gender) {
     47         this.gender = gender;
     48     }
     49     public Dog getDog() {
     50         return dog;
     51     }
     52     public void setDog(Dog dog) {
     53         this.dog = dog;
     54     }
     55     public String toString(){
     56         return "perName: " + this.name + "
    " + 
     57                 "perAge: " + this.age + "
    " + 
     58                 "perGender: " + this.gender + "
    " + 
     59                 "dogName: " + this.dog.getName() + "
    " +
     60                 "dogAge: " + this.dog.getAge() + "
    " +
     61                 "dogGender: " + this.dog.getGender();
     62     }
     63 }
     64 class Dog{
     65     private String name;
     66     private int age;
     67     private String gender;
     68     public Dog(){};
     69     public Dog(String name, int age, String gender) {
     70         super();
     71         this.name = name;
     72         this.age = age;
     73         this.gender = gender;
     74     }
     75     public String getName() {
     76         return name;
     77     }
     78     public void setName(String name) {
     79         this.name = name;
     80     }
     81     public int getAge() {
     82         return age;
     83     }
     84     public void setAge(int age) {
     85         this.age = age;
     86     }
     87     public String getGender() {
     88         return gender;
     89     }
     90     public void setGender(String gender) {
     91         this.gender = gender;
     92     }
     93 }
     94 public class TestXS {
     95     private static XStream xs;
     96     static{
     97         xs = new XStream();
     98     }
     99     public static void main(String[] args) throws Exception {
    100         Person per = new Person("王大牛", 29, "男", new Dog("李二狗", 5, "男"));
    101 //        String xmlResult = xs.toXML(per);
    102 //        System.out.println(xmlResult);//控制台输出
    103         String pathName = "D:/per.xml";
    104 //        xml2File(per, pathName, "gbk", "Sola");
    105         Person per2 = (Person)File2Object(pathName, per, "Sola", "gbk");
    106         System.out.println(per2);
    107         
    108     }
    109     public static void xml2File(Object obj, String pathName, String aliasName) throws Exception{
    110         //按系统默认编码写到文件
    111         if(null != aliasName && !("".equals(aliasName)))//不使用别名此参数填入""或null
    112             xs.alias(aliasName, obj.getClass());//为最外层标签指定别名,默认为包名+类名
    113         xs.toXML(obj, new FileWriter(new File(pathName)));
    114         //或 xs.toXML(obj, new FileOutputStream(new File(pathName)));
    115     }
    116     public static void xml2File(Object obj, String pathName, String charsetName, String aliasName) throws Exception{
    117         //按指定编码写到文件
    118         if(null != aliasName && !("".equals(aliasName)))//不使用别名此参数填入""或null
    119             xs.alias(aliasName, obj.getClass());//为最外层标签指定别名,默认为包名+类名
    120         xs.toXML(obj, new OutputStreamWriter(new FileOutputStream(new File(pathName)), charsetName));
    121     }
    122     public static Object File2Object(String pathName, Object obj, String rootName){
    123         //按系统默认编码读取文件
    124         if(null != obj && null != rootName)//未使用别名,两个参数填入null即可
    125             xs.aliasType(rootName, obj.getClass());//写入文件时用过别名,读取时许指定别名对应的类
    126         return xs.fromXML(new File(pathName));
    127     }
    128     public static Object File2Object(String pathName, Object obj, String rootName, String charsetName) throws Exception{
    129         //按指定编码读取文件
    130         if(null != obj && null != rootName)//未使用别名,两个参数填入null即可
    131             xs.aliasType(rootName, obj.getClass());//写入文件时用过别名,读取时许指定别名对应的类
    132         return xs.fromXML(new InputStreamReader(new FileInputStream(new File(pathName)), charsetName));
    133     }
    134 }
  • 相关阅读:
    gdbinit理解
    debug套路
    node 版本升级
    工作方式
    vscode 插件编写
    函数闭包与装饰器
    高阶函数与递归
    函数嵌套及作用域
    函数
    文件处理
  • 原文地址:https://www.cnblogs.com/cause/p/3549258.html
Copyright © 2011-2022 走看看