XStream(可以把JavaBean转换成XML的小工具)

本文介绍了如何使用XStream库将JavaBean对象转换为XML格式,包括添加别名、设置属性为XML元素、忽略不需要的属性等操作,以实现自定义的XML序列化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、XStream可以把JavaBean转化为(序列化为)xml

依赖jar包:核心jar包:xstream-1.4.7.jar;必须依赖包:xpp3_min-1.1.4c(XML Pull Parser,一款速度很快的XML解析器);xstream-benchmark-1.4.7.jar;xstream-hibernate-1.4.7.jar;

2、使用步骤

XStream xstream = new XStream();

String xmlStr = xstream.toXML(javabean);

示例:

import java.util.ArrayList;
import java.util.List;
import com.thoughtworks.xstream.XStream;
public class Testpc {
    public static void main(String[] args) {
        List<Province> proList = getProvinceList() ;    
        XStream xstream = new XStream() ;        
        //String s = xstream.toXML(proList) ;
        //System.out.println(s);
/*
<list>-->List类型显示list
  <com.demo1.Province>-->javabean的类型为Province,它的元素名称为类的完整名
    <name>北京</name>-->javabean的属性名
    <cities>-->javabean的属性名
      <com.demo1.City>
        <name>东城区</name>
        <des>dongchengqu</des>
      </com.demo1.City>
      <com.demo1.City>
        <name>西城区</name>
        <des>xichengqu</des>
      </com.demo1.City>
    </cities>
  </com.demo1.Province>
  <com.demo1.Province>
    <name>陕西</name>
    <cities>
      <com.demo1.City>
        <name>商洛</name>
        <des>shangluo</des>
      </com.demo1.City>
      <com.demo1.City>
        <name>西安</name>
        <des>xian</des>
      </com.demo1.City>
    </cities>
  </com.demo1.Province>
</list>
*/
        //别名:<list>修改为<china>;<com.demo1.Province>修改为<province>一类
        xstream.alias("china", List.class);
        xstream.alias("province", Province.class);
        xstream.alias("city", City.class);
        //默认javabean的属性都会生成子元素,但可以指定javabean某属性为XML中元素的属性
        xstream.useAttributeFor(Province.class,"name"); //把Province类中的name属性作为元素属性
        //去除<cities>这样的Collection类型的属性
        xstream.addImplicitCollection(Province.class, "cities");
        //去除不想要的javabean属性
        xstream.omitField(City.class,"des") ;
        
        String s = xstream.toXML(proList) ;
        System.out.println(s);
/*
<china>
  <province name="北京">
    <city>
      <name>东城区</name>
    </city>
    <city>
      <name>西城区</name>
    </city>
  </province>
  <province name="陕西">
    <city>
      <name>商洛</name>
    </city>
    <city>
      <name>西安</name>
    </city>
  </province>
</china>
 */
    }
    public static List<Province> getProvinceList() {
        Province p1 = new Province() ;
        p1.setName("北京");
        p1.addCity(new City("东城区","dongchengqu"));
        p1.addCity(new City("西城区","xichengqu"));
        
        Province p2 = new Province() ;
        p2.setName("陕西");
        p2.addCity(new City("商洛","shangluo"));
        p2.addCity(new City("西安","xian"));
        
        List<Province> provinceList = new ArrayList<Province>() ;
        provinceList.add(p1) ;
        provinceList.add(p2) ;    
        
        return provinceList;
    }
}

City.java

public class City {
    private String name ;
    private String des ;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDes() {
        return des;
    }
    public void setDes(String des) {
        this.des = des;
    }    
    public City() {
        super();
    }
    public City(String name, String des) {
        super();
        this.name = name;
        this.des = des;
    }
    @Override
    public String toString() {
        return "City [name=" + name + ", des=" + des + "]";
    }  
}
Province.java

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

public class Province {
    private String name ;
    private List<City> cities = new ArrayList<City>() ;    
    public void addCity(City city) {
        cities.add(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;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值