您的位置:首页 > 编程语言 > Java开发

javaBean:XStream---把javaBean转换为XML

2018-02-06 23:05 369 查看
XStream的jar包

核心JAR包:xstream-1.4.7.jar;

必须依赖包:xpp3_min-1.1.4c(XML Pull Parser,一款速度很快的XML解析器);

使用步骤

XStream xstream = new XStream();

String xmlStr = xstream.toXML(javabean);

使用细节

别名:把类型对应的元素名修改了

xstream.alias(“china”, List.class):让List类型生成的元素名为china

xstream.alias(“province”, Province.class):让Province类型生成的元素名为province

使用为属性:默认类的成员,生成的是元素的子元素!我们希望让类的成员生成元素的属性

xstream.useAttributeFor(Province.class, “name”):把Province类的名为name成员,生成元素的name属性

去除Collection类型的成名:我们只需要Collection的内容,而不希望Collection本身也生成一个元素

xstream.addImplicitCollection(Province.class, “cities”):让Province类的名为cities(它是List类型的,它的内容还会生成元素)的成名不生成元素

去除类的指定成名,让其不生成xml元素

xstream.omitField(City.class, “description”):在生成的xml中不会出现City类的名为description的对应的元素!

public class Demo1 {
public List<Province> getProvinceList(){

Province p1=new Province();
p1.setName("北京");
p1.addCity(new City("东城区","DongChengQu"));
p1.addCity(new City("昌平区","ChangPingQu"));

Province p2=new Province();
p2.setName("辽宁");
p2.addCity(new City("沈阳","ShenYnag"));
p2.addCity(new City("葫芦岛","HuLuDao"));

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

return province;
}
//  @Test
public void fun1(){
List<Province> proList=this.getProvinceList();

XStream xstream=new XStream();
String s=xstream.toXML(proList);
System.out.println(s);
}

/**
* 别名(alias)
* 默认List类型对应<List> 希望对应<China>
* 默认Province对应<cn.sun.XStream.Province> 希望对应<Province>
* 默认City对应<cn.sun.XStream.City> 希望对应<City>
*/
//  @Test
public void fun2(){
List<Province> proList=this.getProvinceList();
XStream xstream=new XStream();
xstream.alias("China",List.class);
xstream.alias("Province", Province.class);
xstream.alias("City",City.class);
String s=xstream.toXML(proList);
System.out.print(s);
}

/**
* 默认javaBean的属性都会生成子元素,现在想要生成元素的属性
*/

@Test
public void fun3(){
List<Province> proList=this.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");

/**
* 去除没有用的Collection类型生成的元素比如<cities>
*/
xstream.addImplicitCollection(Province.class, "cities");

/**
* 让City类的,名为description的属性不生成对应的XML元素
*/
xstream.omitField(City.class, "description");

String s=xstream.toXML(proList);
System.out.print(s);
}

}


package cn.sun.XStream;

public class City {
private String name;
private String description;
pu
9426
blic City() {
super();
}
public City(String name, String description) {
super();
this.name = name;
this.description = 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;
}
@Override
public String toString() {
return "City [name=" + name + ", description=" + description + "]";
}
}


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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: