成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用XStream實(shí)現(xiàn)Java對(duì)象與XML互相轉(zhuǎn)換

崔曉明 / 1509人閱讀

摘要:簡(jiǎn)介是一個(gè)對(duì)象與互相轉(zhuǎn)換的工具類庫(kù)。官網(wǎng)鏈接簡(jiǎn)單使用下載頁(yè)面使用構(gòu)建項(xiàng)目的加入以下依賴創(chuàng)建對(duì)象轉(zhuǎn)使用方法。創(chuàng)建解析對(duì)象設(shè)置別名默認(rèn)會(huì)輸出全路徑轉(zhuǎn)為轉(zhuǎn)換后的文本為轉(zhuǎn)對(duì)象使用方法。

XStream簡(jiǎn)介

XStream是一個(gè)Java對(duì)象與XML互相轉(zhuǎn)換的工具類庫(kù)。

官網(wǎng)鏈接: http://x-stream.github.io/index.html

簡(jiǎn)單使用

下載頁(yè)面:http://x-stream.github.io/download.html

使用Maven構(gòu)建項(xiàng)目的加入以下依賴:


    com.thoughtworks.xstream
    xstream
    1.4.10

創(chuàng)建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對(duì)象轉(zhuǎn)XML:

使用xStream.toXML()方法。

public static void main(String[] args) {
    
    User user = new User("lanweihong", "[email protected]");
    
    //創(chuàng)建解析XML對(duì)象
    XStream xStream = new XStream();
    //設(shè)置別名, 默認(rèn)會(huì)輸出全路徑
    xStream.alias("User", User.class);
    //轉(zhuǎn)為xml
    String xml = xStream.toXML(user);
    System.out.println(xml);
}

轉(zhuǎn)換后的xml文本為:


  lanweihong
  [email protected]
XML轉(zhuǎn)Java對(duì)象

使用xStream.fromXML()方法。

public static void main(String[] args) {
    XStream xStream = new XStream();
    xStream.alias("User", User.class);
    String xml = "
" +
            "  lanweihong
" +
            "  [email protected]
" +
            "";
    //轉(zhuǎn)對(duì)象
    User user = (User)xStream.fromXML(xml);
    System.out.println(user.toString());
}

輸出文本為:

User:{userName=lanweihong,[email protected]}
使用注解

最基本的注解@XStreamAlias用于設(shè)置字段別名;我們將上述例子創(chuàng)建的User對(duì)象添加注解改造一下:

@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默認(rèn)不會(huì)讀取這個(gè)注解,因?yàn)?,我們需要聲?b>XStream的注解來(lái)源:

public static void main(String[] args) {
    User user = new User("lanweihong", "[email protected]");
    XStream xStream = new XStream();
    //聲明XStream注解來(lái)源
    xStream.processAnnotations(User.class);
    String xml = xStream.toXML(user);
    System.out.println(xml);
}

輸出文本為:


  lanweihong
  [email protected]

由此可見(jiàn),生成的xml節(jié)點(diǎn)名稱已經(jīng)變?yōu)槲覀兪褂?b>@XStreamAlias注解的別名。

簡(jiǎn)單封裝為工具類
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

public class XmlUtils {

    /**
     * XML轉(zhuǎn)對(duì)象
     * @param clazz 對(duì)象類
     * @param str xml字符串
     * @param  T
     * @return
     */
    public static  T parseFromXml(Class clazz, String xml) {
        //創(chuàng)建解析XML對(duì)象
        XStream xStream = new XStream(new DomDriver());
        //處理注解
        xStream.processAnnotations(clazz);
        @SuppressWarnings("unchecked")
        //將XML字符串轉(zhuǎn)為bean對(duì)象
        T t = (T)xStream.fromXML(xml);
        return t;
    }

    /**
     * 對(duì)象轉(zhuǎn)xml
     * @param obj 對(duì)象
     * @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/

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/70803.html

相關(guān)文章

  • XStream自定義XML轉(zhuǎn)換

    摘要:跟進(jìn)解析的源碼,沒(méi)找到加載的地方,時(shí)間緊迫,也沒(méi)時(shí)間去仔細(xì)閱讀文檔,于是干脆自己動(dòng)手重寫了一個(gè)簡(jiǎn)單的從到的轉(zhuǎn)換器。自定義直接實(shí)現(xiàn)這個(gè)接口,方法返回,直接接手整個(gè)的解析工作。 莫名其妙的異常 昨天做一個(gè)項(xiàng)目時(shí)用到了XStream來(lái)做XML到Bean的轉(zhuǎn)換器,需要轉(zhuǎn)換的Bean格式如下: @Data @XStreamAlias(Document) public class AccountT...

    Nosee 評(píng)論0 收藏0
  • XStream自定義XML轉(zhuǎn)換

    摘要:跟進(jìn)解析的源碼,沒(méi)找到加載的地方,時(shí)間緊迫,也沒(méi)時(shí)間去仔細(xì)閱讀文檔,于是干脆自己動(dòng)手重寫了一個(gè)簡(jiǎn)單的從到的轉(zhuǎn)換器。自定義直接實(shí)現(xiàn)這個(gè)接口,方法返回,直接接手整個(gè)的解析工作。 莫名其妙的異常 昨天做一個(gè)項(xiàng)目時(shí)用到了XStream來(lái)做XML到Bean的轉(zhuǎn)換器,需要轉(zhuǎn)換的Bean格式如下: @Data @XStreamAlias(Document) public class AccountT...

    Little_XM 評(píng)論0 收藏0
  • Ofbiz使用的一些庫(kù)

    摘要:解析檢測(cè)文本編碼與對(duì)象的互相轉(zhuǎn)化表達(dá)式語(yǔ)言富郵件組件從等來(lái)源中提取結(jié)構(gòu)化內(nèi)容遠(yuǎn)程調(diào)用規(guī)則匹配框架安全 xercesimpl 解析xml icu4j 檢測(cè)文本編碼 xstream xmljson與java對(duì)象的互相轉(zhuǎn)化 juel java表達(dá)式語(yǔ)言 ical4j 富郵件 axis2 webservice組件 tika 從htmlpdf等來(lái)源中提取結(jié)構(gòu)化內(nèi)容 xm...

    Leck1e 評(píng)論0 收藏0
  • 2016年度最受歡迎的100個(gè) Java 庫(kù)

    摘要:最受歡迎的個(gè)庫(kù)連續(xù)兩年,二度成為中最受歡迎的庫(kù)。此外,谷歌的開(kāi)源項(xiàng)目來(lái)勢(shì)洶洶,勇奪第三名,該庫(kù)包含了一系列谷歌內(nèi)含的核心庫(kù)。在本次最受歡迎的個(gè)庫(kù)中,個(gè)庫(kù)與相關(guān)。 【編者按】本文作者為 Henn Idan,主要介紹基于 GitHub 中的數(shù)據(jù)分析,得出的2016年度最受歡迎的100個(gè) Java 庫(kù)。本文系國(guó)內(nèi) ITOM 管理平臺(tái) OneAPM 編譯呈現(xiàn)。 誰(shuí)拔得頭籌?誰(shuí)又落于人后?我們分...

    nihao 評(píng)論0 收藏0
  • java版微信公眾號(hào)開(kāi)發(fā)(二):配置token

    摘要:掃碼登陸微信公眾號(hào)平臺(tái),此時(shí)默認(rèn)的是編輯模式,需要修改為開(kāi)發(fā)者模式。若確認(rèn)此次請(qǐng)求來(lái)自微信服務(wù)器,請(qǐng)?jiān)瓨臃祷貐?shù)內(nèi)容,則接入生效,成為開(kāi)發(fā)者成功,否則接入失敗。 掃碼登陸微信公眾號(hào)平臺(tái),此時(shí)默認(rèn)的是編輯模式,需要修改為開(kāi)發(fā)者模式。 找到開(kāi)發(fā)--->基本配置, showImg(https://segmentfault.com/img/bVbdTk2?w=323&h=786); showI...

    URLOS 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<