制作网站公司首 荐乐云seo,东莞网站建设快速排名,找最新游戏做视频网站有哪些,设计网站哪个好用XStreamAlias使用 一、 特点: 简化的API; 无映射文件; 高性能,低内存占用; 整洁的XML; 不需要修改对象;支持内部私有字段,不需要setter/getter方法 提供序列化接口; 自定义转换类型策略; XStream的优点很多#xff0c;但是也有一些小bug#xff0c;比如在定义别名中的下划线… XStreamAlias使用 一、 特点: 简化的API; 无映射文件; 高性能,低内存占用; 整洁的XML; 不需要修改对象;支持内部私有字段,不需要setter/getter方法 提供序列化接口; 自定义转换类型策略; XStream的优点很多但是也有一些小bug比如在定义别名中的下划线“_”转换为xml后会变成“__”这个符号 不过下划线问题可以用下面这个解决 XStream xStream new XStream(new XppDriver(new XmlFriendlyNameCoder(_-, _))); 二、 使用场景 Transport转换 Persistence 持久化对象 Configuration 配置 Unit Tests 单元测试 Interface服务之间XML消息的交互 案例代码 XStreamAlias(kfpt_dept) //注意这个后面变成了kfpt__dept 下划线。。。。
class Dept {private String deptName;private ListStaff staffs;public String getDeptName() {return deptName;}public void setDeptName(String deptName) {this.deptName deptName;}public ListStaff getStaffs() {return staffs;}public void setStaffs(ListStaff staffs) {this.staffs staffs;}Overridepublic String toString() {return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);}
}XStreamAlias(kfpt_staffs)
class Staff {private String name;private int age;public Staff() {super();}public Staff(String name, int age) {super();this.name name;this.age age;}public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) {this.age age;}Overridepublic String toString() {return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);}} 转换工具类 public class XstreamUtil {/*** 将bean转换为xml* param obj 转换的bean* return bean转换为xml*/public static String objectToXml(Object obj) {// XStream xStream new XStream(); XStream xStream new XStream(new XppDriver(new XmlFriendlyNameCoder(_-, _)));//解决下划线问题//xstream使用注解转换xStream.processAnnotations(obj.getClass());return xStream.toXML(obj);}/*** 将xml转换为bean* param T 泛型* param xml 要转换为bean的xml* param cls bean对应的Class* return xml转换为bean*/public static T T xmlToObject(String xml, ClassT cls){XStream xstream new XStream(new DomDriver());//xstream使用注解转换xstream.processAnnotations(cls);return (T) xstream.fromXML(xml);}
} main方法测试 public static void main(String[] args) {//java bean 转 xmlDept d new Dept();ListStaff staffs new ArrayList();Staff s1 new Staff(wuyun, 20);Staff s2 new Staff(lilei, 22);staffs.add(s1);staffs.add(s2);d.setDeptName(开放平台);d.setStaffs(staffs);System.out.println(objectToXml(d));/* 用这个方法 XStream xStream new XStream(); 会有下划线问题 kfpt__dept deptName开放平台/deptName staffs kfpt__staffs namewuyun/name age20/age /kfpt__staffs kfpt__staffs namelilei/name age22/age /kfpt__staffs /staffs/kfpt__dept XStream xStream new XStream(new XppDriver(new XmlFriendlyNameCoder(_-, _)));//可以解决下划线问题 kfpt_dept deptName开放平台/deptName staffs kfpt_staffs namewuyun/name age20/age /kfpt_staffs kfpt_staffs namelilei/name age22/age /kfpt_staffs /staffs/kfpt_dept *///xml 转 java bean // String xml kfpt__deptdeptName开放平台/deptNamestaffskfpt__staffsnamewuyun/nameage20/age/kfpt__staffskfpt__staffsnamelilei/nameage22/age/kfpt__staffs/staffs/kfpt__dept;// XStream xstream new XStream(new DomDriver());// //xstream使用注解转换// xstream.processAnnotations(Dept.class);// System.out.println(((Dept) xstream.fromXML(xml)).toString());// System.out.println(xmlToObject(xml, Dept.class).toString());/* com.cmcc.open.ss.vo.req.Dept5660d2d2[ deptName开放平台 staffs[com.cmcc.open.ss.vo.req.Staff6eb1054b[ namewuyun age20], com.cmcc.open.ss.vo.req.Staff27d2b7b3[ namelilei age22]]] */} 转载于:https://www.cnblogs.com/wuyun-blog/p/7800067.html