摘要:簡介是一個對象與互相轉換的工具類庫。官網鏈接簡單使用下載頁面使用構建項目的加入以下依賴創建對象轉使用方法。創建解析對象設置別名默認會輸出全路徑轉為轉換后的文本為轉對象使用方法。
XStream簡介
XStream是一個Java對象與XML互相轉換的工具類庫。
官網鏈接: http://x-stream.github.io/index.html
簡單使用下載頁面:http://x-stream.github.io/download.html
使用Maven構建項目的加入以下依賴:
com.thoughtworks.xstream xstream 1.4.10
創建Bean:
public class User { private String userName; private String email; public User() {} public User(String userName, String email) { this.userName = userName; this.email = email; } public String toString() { return "User:{userName=" + this.userName + ",email=" + this.email + "}"; } //Getter and Setter... }Java對象轉XML:
使用xStream.toXML()方法。
public static void main(String[] args) { User user = new User("lanweihong", "lwhhhp@gmail.com"); //創建解析XML對象 XStream xStream = new XStream(); //設置別名, 默認會輸出全路徑 xStream.alias("User", User.class); //轉為xml String xml = xStream.toXML(user); System.out.println(xml); }
轉換后的xml文本為:
XML轉Java對象lanweihong lwhhhp@gmail.com
使用xStream.fromXML()方法。
public static void main(String[] args) { XStream xStream = new XStream(); xStream.alias("User", User.class); String xml = "" + " "; //轉對象 User user = (User)xStream.fromXML(xml); System.out.println(user.toString()); }lanweihong " + "lwhhhp@gmail.com " + "
輸出文本為:
User:{userName=lanweihong,email=lwhhhp@gmail.com}使用注解
最基本的注解@XStreamAlias用于設置字段別名;我們將上述例子創建的User對象添加注解改造一下:
@XStreamAlias("user") public class User { @XStreamAlias("username") private String userName; @XStreamAlias("email") private String email; public User() {} public User(String userName, String email) { this.userName = userName; this.email = email; } public String toString() { return "User:{userName=" + this.userName + ",email=" + this.email + "}"; } //Getter and Setter... }
XStream默認不會讀取這個注解,因為,我們需要聲明XStream的注解來源:
public static void main(String[] args) { User user = new User("lanweihong", "lwhhhp@gmail.com"); XStream xStream = new XStream(); //聲明XStream注解來源 xStream.processAnnotations(User.class); String xml = xStream.toXML(user); System.out.println(xml); }
輸出文本為:
lanweihong lwhhhp@gmail.com
由此可見,生成的xml節點名稱已經變為我們使用@XStreamAlias注解的別名。
簡單封裝為工具類import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; public class XmlUtils { /** * XML轉對象 * @param clazz 對象類 * @param str xml字符串 * @paramT * @return */ public static T parseFromXml(Class clazz, String xml) { //創建解析XML對象 XStream xStream = new XStream(new DomDriver()); //處理注解 xStream.processAnnotations(clazz); @SuppressWarnings("unchecked") //將XML字符串轉為bean對象 T t = (T)xStream.fromXML(xml); return t; } /** * 對象轉xml * @param obj 對象 * @return */ public static String toXml(Object obj) { XStream xStream = new XStream(new DomDriver()); xStream.processAnnotations(obj.getClass()); return xStream.toXML(obj); } }
原文地址:https://www.lwhweb.com/2017/11/21/xstream-1/
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70803.html
摘要:跟進解析的源碼,沒找到加載的地方,時間緊迫,也沒時間去仔細閱讀文檔,于是干脆自己動手重寫了一個簡單的從到的轉換器。自定義直接實現這個接口,方法返回,直接接手整個的解析工作。 莫名其妙的異常 昨天做一個項目時用到了XStream來做XML到Bean的轉換器,需要轉換的Bean格式如下: @Data @XStreamAlias(Document) public class AccountT...
摘要:跟進解析的源碼,沒找到加載的地方,時間緊迫,也沒時間去仔細閱讀文檔,于是干脆自己動手重寫了一個簡單的從到的轉換器。自定義直接實現這個接口,方法返回,直接接手整個的解析工作。 莫名其妙的異常 昨天做一個項目時用到了XStream來做XML到Bean的轉換器,需要轉換的Bean格式如下: @Data @XStreamAlias(Document) public class AccountT...
摘要:解析檢測文本編碼與對象的互相轉化表達式語言富郵件組件從等來源中提取結構化內容遠程調用規則匹配框架安全 xercesimpl 解析xml icu4j 檢測文本編碼 xstream xmljson與java對象的互相轉化 juel java表達式語言 ical4j 富郵件 axis2 webservice組件 tika 從htmlpdf等來源中提取結構化內容 xm...
摘要:最受歡迎的個庫連續兩年,二度成為中最受歡迎的庫。此外,谷歌的開源項目來勢洶洶,勇奪第三名,該庫包含了一系列谷歌內含的核心庫。在本次最受歡迎的個庫中,個庫與相關。 【編者按】本文作者為 Henn Idan,主要介紹基于 GitHub 中的數據分析,得出的2016年度最受歡迎的100個 Java 庫。本文系國內 ITOM 管理平臺 OneAPM 編譯呈現。 誰拔得頭籌?誰又落于人后?我們分...
摘要:掃碼登陸微信公眾號平臺,此時默認的是編輯模式,需要修改為開發者模式。若確認此次請求來自微信服務器,請原樣返回參數內容,則接入生效,成為開發者成功,否則接入失敗。 掃碼登陸微信公眾號平臺,此時默認的是編輯模式,需要修改為開發者模式。 找到開發--->基本配置, showImg(https://segmentfault.com/img/bVbdTk2?w=323&h=786); showI...
閱讀 2511·2021-09-26 10:18
閱讀 3386·2021-09-22 10:02
閱讀 3183·2019-08-30 15:44
閱讀 3326·2019-08-30 15:44
閱讀 1831·2019-08-29 15:25
閱讀 2572·2019-08-26 14:04
閱讀 2035·2019-08-26 12:15
閱讀 2437·2019-08-26 11:43