XStream

代码:

Province.java

package cn.cmlx.xstream;

import java.util.ArrayList;
import java.util.List;

public class Province {
    private String name;// 省名
    private List<City> cities = new ArrayList<City>();

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<City> getCities() {
        return cities;
    }

    public void setCities(List<City> cities) {
        this.cities = cities;
    }

    public void addCity(City city) {
        cities.add(city);
    }
}
Province.java

City.java

package cn.cmlx.xstream;

public class City {
    private String name;// 市名
    private String description;// 描述

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public City() {
        super();
        // TODO Auto-generated constructor stub
    }

    public City(String name, String description) {
        super();
        this.name = name;
        this.description = description;
    }

    @Override
    public String toString() {
        return "City [name=" + name + ", description=" + description + "]";
    }

}
City.java

Xstream.java

package cn.cmlx.xstream;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

import com.thoughtworks.xstream.XStream;

/**
 * 演示Xstream
 * 
 * @author 赤名莉香
 *
 */
public class Xstream1 {
    // 返回javabean集合
    public List<Province> getProvinceList() {
        Province p1 = new Province();
        p1.setName("北京");
        p1.addCity(new City("东城区", "DongChengQv"));
        p1.addCity(new City("海淀区", "HaiDianQv"));

        Province p2 = new Province();
        p2.setName("四川");
        p2.addCity(new City("成都", "Chengdu"));
        p2.addCity(new City("达州", "Dazhou"));

        List<Province> provinceList = new ArrayList<Province>();
        provinceList.add(p1);
        provinceList.add(p2);

        return provinceList;
    }
@Test
    public void fun5() {
        List<Province> proList = getProvinceList();
        XStream xstream = new XStream();
        /*
         * 给指定类型指定别名
         */
        xstream.alias("china", List.class);
        xstream.alias("province", Province.class);
        xstream.alias("city", City.class);
        /*
         * 把Province类型的name属性,生成<province>元素的属性
         */
        xstream.useAttributeFor(Province.class,"name");
        /*
         * 去除<cities>这样的Collection类型的属性
         * 去除Province类的名为cities类型的属性
         */
        xstream.addImplicitCollection(Province.class, "cities");
        
        /*
         * 让City类的的名为description属性不生成对应的xml元素
         */
        xstream.omitField(City.class, "description");
        /*
         * 创建XStream对象 调用toML把集合转换成xml字符串
         */
        String s = xstream.toXML(proList);
        System.out.println(s);
    }
}

Xstream1.java

运行结果对比:

前:

<list>
  <cn.cmlx.xstream.Province>
    <name>北京</name>
    <cities>
      <cn.cmlx.xstream.City>
        <name>东城区</name>
        <description>DongChengQv</description>
      </cn.cmlx.xstream.City>
      <cn.cmlx.xstream.City>
        <name>海淀区</name>
        <description>HaiDianQv</description>
      </cn.cmlx.xstream.City>
    </cities>
  </cn.cmlx.xstream.Province>
  <cn.cmlx.xstream.Province>
    <name>四川</name>
    <cities>
      <cn.cmlx.xstream.City>
        <name>成都</name>
        <description>Chengdu</description>
      </cn.cmlx.xstream.City>
      <cn.cmlx.xstream.City>
        <name>达州</name>
        <description>Dazhou</description>
      </cn.cmlx.xstream.City>
    </cities>
  </cn.cmlx.xstream.Province>
</list>

后:

<china>
  <province name="北京">
    <city>
      <name>东城区</name>
    </city>
    <city>
      <name>海淀区</name>
    </city>
  </province>
  <province name="四川">
    <city>
      <name>成都</name>
    </city>
    <city>
      <name>达州</name>
    </city>
  </province>
</china>

 

posted @ 2018-09-08 16:24  cmlx  阅读(251)  评论(0)    收藏  举报