java xstream xml文件_java与xml转换 -- XStreamAlias

@XStreamAlias

1.特点

简化的API;

无映射文件;

高性能,低内存占用;

整洁的XML;

不需要修改对象;支持内部私有字段,不需要setter/getter方法

提供序列化接口;

自定义转换类型策略;

2.使用场景

Transport转换

Persistence 持久化对象

Configuration 配置

Unit Tests 单元测试

Interface服务之间XML消息的交互

3.model

实体类

importcom.thoughtworks.xstream.annotations.XStreamAlias;/***@authorceshi

* @Title: Student

* @ProjectName ceshi

* @Description: TODO

* @date 2018/6/2817:29*/@XStreamAlias("Student_Message")public classStudent {privateString id;privateString name;privateString age;privateString achievement;publicStudent(String id,String name,String age,String achievement){this.id =id;this.name =name;this.age =age;this.achievement =achievement;

}publicString getId() {returnid;

}public voidsetId(String id) {this.id =id;

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}publicString getAge() {returnage;

}public voidsetAge(String age) {this.age =age;

}publicString getAchievement() {returnachievement;

}public voidsetAchievement(String achievement) {this.achievement =achievement;

}

@OverridepublicString toString() {return "Student{" +

"id='" + id + '\'' +

", name='" + name + '\'' +

", age='" + age + '\'' +

", achievement='" + achievement + '\'' +

'}';

}

}

工具类

importcom.thoughtworks.xstream.XStream;importcom.thoughtworks.xstream.io.xml.DomDriver;/***@authorceshi

* @Title: XStreamUtils

* @ProjectName ceshi

* @Description: TODO

* @date 2018/6/2817:38*/

public classXStreamUtils {/*** 将Object转换为xml

*@paramobj 转换的bean

*@returnbean转换为xml*/

public staticString objectToXml(Object obj) {

XStream xStream= newXStream();//xstream使用注解转换

xStream.processAnnotations(obj.getClass());returnxStream.toXML(obj);

}/*** 将xml转换为T

*@param 泛型

*@paramxml 要转换为T的xml

*@paramcls T对应的Class

*@returnxml转换为T*/

public static T xmlToObject(String xml, Classcls){

XStream xstream= new XStream(newDomDriver());//xstream使用注解转换

xstream.processAnnotations(cls);return(T) xstream.fromXML(xml);

}

}

测试类

importorg.junit.Test;/***@authorceshi

* @Title: JunitXStream

* @ProjectName ceshi

* @Description: TODO

* @date 2018/6/2817:29*/

public classJunitXStream {

@Testpublic voidtest(){

Student s= new Student("1","张三","18","90");

String xml=XStreamUtils.objectToXml(s);

xml= "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+xml;

xml= xml.replaceAll("__","_");

System.out.println(xml);

Student ss= XStreamUtils.xmlToObject(xml,Student.class);

System.out.println(ss);

}

}

结果:

c52ae192cbda86d910dec9d9c6723ac6.png

pom:需要使用到  xstream-1.4.8.jar

com.thoughtworks.xstream

xstream

1.4.8

注意事项:

1.XStream有一些小bug,在定义别名中的下划线“_”转换为xml后会变成“__”这个符号,下划线问题可以用下面这个解决

XStream xStream = new XStream(new XppDriver(new XmlFriendlyNameCoder("_-", "_")));

也可以像测试类中用:replaceAll("__","_"); 替换掉

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值