免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
xml與java對象轉(zhuǎn)換

@XStreamAlias使用

一、 特點(diǎn):

簡化的API; 
無映射文件; 
高性能,低內(nèi)存占用; 
整潔的XML; 
不需要修改對象;支持內(nèi)部私有字段,不需要setter/getter方法 
提供序列化接口; 
自定義轉(zhuǎn)換類型策略; 


XStream的優(yōu)點(diǎn)很多,但是也有一些小bug,比如在定義別名中的下劃線“_”轉(zhuǎn)換為xml后會變成“__”這個符號, 不過下劃線問題可以用下面這個解決

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

二、 使用場景

Transport轉(zhuǎn)換 
Persistence 持久化對象 
Configuration 配置 
Unit Tests 單元測試

Interface服務(wù)之間XML消息的交互

 

案例代碼:

@XStreamAlias("kfpt_dept") //注意這個,后面變成了<kfpt__dept>  下劃線。。。。class Dept {    private String deptName;    private List<Staff> staffs;    public String getDeptName() {        return deptName;    }    public void setDeptName(String deptName) {        this.deptName = deptName;    }    public List<Staff> getStaffs() {        return staffs;    }    public void setStaffs(List<Staff> staffs) {        this.staffs = staffs;    }    @Override    public 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;    }    @Override    public String toString() {        return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);    }}

 

轉(zhuǎn)換工具類:

public class XstreamUtil {        /**     * 將bean轉(zhuǎn)換為xml     * @param obj 轉(zhuǎn)換的bean     * @return bean轉(zhuǎn)換為xml     */    public static String objectToXml(Object obj) {      //  XStream xStream = new XStream();
 XStream xStream = new XStream(new XppDriver(new XmlFriendlyNameCoder("_-", "_")));//解決下劃線問題 //xstream使用注解轉(zhuǎn)換 xStream.processAnnotations(obj.getClass()); return xStream.toXML(obj); } /** * 將xml轉(zhuǎn)換為bean * @param <T> 泛型 * @param xml 要轉(zhuǎn)換為bean的xml * @param cls bean對應(yīng)的Class * @return xml轉(zhuǎn)換為bean */ public static <T> T xmlToObject(String xml, Class<T> cls){ XStream xstream = new XStream(new DomDriver()); //xstream使用注解轉(zhuǎn)換 xstream.processAnnotations(cls); return (T) xstream.fromXML(xml); }}

 

main方法測試

public static void main(String[] args) {        //java bean 轉(zhuǎn) xml        Dept d = new Dept();        List<Staff> 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>
<name>wuyun</name>
<age>20</age>
</kfpt__staffs>
<kfpt__staffs>
<name>lilei</name>
<age>22</age>
</kfpt__staffs>
</staffs>
</kfpt__dept>

 

XStream xStream = new XStream(new XppDriver(new XmlFriendlyNameCoder("_-", "_")));//可以解決下劃線問題

<kfpt_dept>
<deptName>開放平臺</deptName>
<staffs>
<kfpt_staffs>
<name>wuyun</name>
<age>20</age>
</kfpt_staffs>
<kfpt_staffs>
<name>lilei</name>
<age>22</age>
</kfpt_staffs>
</staffs>
</kfpt_dept>

*/                //xml 轉(zhuǎn) java bean         // String xml = "<kfpt__dept><deptName>開放平臺</deptName><staffs><kfpt__staffs><name>wuyun</name><age>20</age></kfpt__staffs><kfpt__staffs><name>lilei</name><age>22</age></kfpt__staffs></staffs></kfpt__dept>";        //        XStream xstream = new XStream(new DomDriver());        //        //xstream使用注解轉(zhuǎn)換        //        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.Dept@5660d2d2[
deptName=開放平臺
staffs=[com.cmcc.open.ss.vo.req.Staff@6eb1054b[
name=wuyun
age=20
], com.cmcc.open.ss.vo.req.Staff@27d2b7b3[
name=lilei
age=22
]]
]


*/


}

 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
MySQL之連接查詢,多表查詢(適合練習(xí)和初學(xué))
GBase 8s SPL入門
在Spring Config 文件中配置 Bean
hibernate(八)注解基礎(chǔ)、注解映射表、注解多表操作多對一和一對多
XStream的學(xué)習(xí)
使用 XStream 解析xml文件
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服