<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qiyadeng

    專注于Java示例及教程
    posts - 84, comments - 152, trackbacks - 0, articles - 34

    XStream兩分鐘教程(譯)

    Posted on 2007-05-08 18:14 qiyadeng 閱讀(23283) 評論(8)  編輯  收藏

     兩分鐘教程

      這是一個關(guān)于XStream快速的介紹。快速瀏覽一下你會馬上知道把一個對象轉(zhuǎn)換到XML或是轉(zhuǎn)換回來是多么的簡單。你肯定會碰到下面的問題。

     

    創(chuàng)建能夠序列化的類

      這是一組簡單的類。XStream能把這些類的實例轉(zhuǎn)換到XML或是轉(zhuǎn)換回來。

     

    public class Person { 

     
    private String firstName;
     
    private String lastName;
     
    private PhoneNumber phonex;
     
    private PhoneNumber fax;
    //構(gòu)造函數(shù)或是其他方法 


    public class PhoneNumber { 

     
    private int code;
     
    private int number; 

    //構(gòu)造函數(shù)或是其他方法
    }

     

      :注意到這些都是私有變量。XStream不關(guān)心變量的作用域。不需要getter或是setter方法。并且,XStream不限定需要默認的構(gòu)造函數(shù)。

     

    實例化XStream

    使用XStream,簡單實例化XStream類:

     

    XStream xStream = new XStream(); 

     

     你需要xstream-[version].jar and xpp3-[version].jar在classpath中。XPP3是一個非常快的XML拉式轉(zhuǎn)換器工具。如果你不想包含這個依賴,你可以使用標準的JAXP DOM轉(zhuǎn)換器來代替。

     

    XStream xStream = new XStream(new DomDriver());//不需要XPP3庫 


    :這個類的簡單設(shè)計是為了實現(xiàn)通用操作的。為了實現(xiàn)更復雜的操作你可以選擇自己創(chuàng)建出不同方式。

     

    現(xiàn)在,為了使用XStream來更精簡的輸出XML,你可以為自定義的類創(chuàng)建別名到XML的元素名的映射。這是使用XStream唯一需要的映射的,甚至這個都是可選的。

     

    xStream.alians("person",Person.class); 

     

    :這是可選的一步。沒有這步XStream也可以很好的起作用,但是XML元素的名字就會包含每個類的全稱(包括包名),這將會使生成XML稍大。

     

    序列號一個對象到XML

     讓我們創(chuàng)建一個Person的實例并且填充它的變量域:

     

    Person joe = new Person("Joe","Walnes"); 

    joe.setPhone(
    new PhoneNumber(123,"1234-456")); 

    joe.setFax(
    new PhoneNumber(123,"9999-999")); 

     

    現(xiàn)在轉(zhuǎn)換到XML,你要做的是簡單的調(diào)用XStream:
     

    String xml = xstream.toXML(joe); 

    生成的XML看上去像這樣:

     

    <person>
      
    <firstname>Joe</firstname>
      
    <lastname>Walnes</lastname>
      
    <phone>
        
    <code>123</code>
        
    <number>1234-456</number>
      
    </phone>
      
    <fax>
        
    <code>123</code>
        
    <number>9999-999</number>
      
    </fax>
    </person> 

     

    非常簡單,像創(chuàng)建XML一樣。

     

    從XML反序列化一個對象

     

    從XML重新構(gòu)造一個對象:
     

    Person newJoe = (Person)xStream.fromXML(xml); 


    XStream是多么的簡單啊!

     

    總結(jié):

     

    使用xStream.alias(String elementName, Class cls)為任何一個自定義類創(chuàng)建到類到元素的別名;

    使用xStream.toXML(Object obj)轉(zhuǎn)換對象到XML;

    使用xStream.fromXML(String xml)轉(zhuǎn)換XML到對象;

    (附原文地址:http://xstream.codehaus.org/tutorial.html)

    Feedback

    # re: XStream兩分鐘教程(譯)  回復  更多評論   

    2007-05-08 23:22 by yeshucheng
    只是在String中來回轉(zhuǎn)換,如果要生成一個xml文件或者從一個xml讀取呢

    # re: XStream兩分鐘教程(譯)  回復  更多評論   

    2007-05-09 09:44 by qiyadeng
    讀:
    Reader reader = new FileReader(persistFile);
    Object object = (Object)xStream.fromXML(reader);
    寫:
    FileWriter writer = new FileWriter(persistFile);
    xStream.toXML(object,writer);

    # re: XStream兩分鐘教程(譯)[未登錄]  回復  更多評論   

    2007-12-06 16:54 by x
    寫的時候是亂碼

    # re: XStream兩分鐘教程(譯)  回復  更多評論   

    2007-12-06 17:55 by qiyadeng
    用的什么編碼?

    # re: XStream兩分鐘教程(譯)  回復  更多評論   

    2008-01-06 23:24 by sitinspring
    確實不錯,值得研究一下。

    # re: XStream兩分鐘教程(譯)  回復  更多評論   

    2008-12-25 17:12 by Lirf
    xstream生成的xml怎么是這樣的:
    <person>
    <firstname>Joe</firstname>
    <lastname>Walnes</lastname>
    <phone>
    <code>123</code>
    <number>1234-456</number>
    </phone>
    <fax>
    <code>123</code>
    <number>9999-999</number>
    </fax>
    </person>
    暈...
    一般都是這樣啊:
    <person firstname="Joe"...>

    # re: XStream兩分鐘教程(譯)  回復  更多評論   

    2009-06-30 21:41 by 地方
    @Lirf你會不會啊,自己不研究最新的技術(shù)。

    # re: XStream兩分鐘教程(譯)  回復  更多評論   

    2013-09-04 16:02 by asd
    @Lirf
    我自己研究出來了一種方法:
    在domain的屬性上加上@XStreamAsAttribute
    然后在代碼中打開自動檢查標簽:xStream.autodetectAnnotations(true);
    就能生成你要的形式的xml文檔了.
    不曉得還有沒其他好辦法.

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 男人的好免费观看在线视频| 在线日韩日本国产亚洲| 日亚毛片免费乱码不卡一区| 亚洲精品国产精品乱码视色| 美女裸身网站免费看免费网站 | 国产成人精品亚洲日本在线| 国产精品无码一二区免费 | 国产又大又粗又硬又长免费| 日韩精品免费视频| 亚洲Av无码国产一区二区| 国产亚洲一区二区精品| 无码中文字幕av免费放| 国产自国产自愉自愉免费24区| 亚洲av乱码一区二区三区香蕉| 国产午夜亚洲精品理论片不卡 | 羞羞视频网站免费入口| 亚洲视频小说图片| 亚洲色偷拍区另类无码专区| 我想看一级毛片免费的| 国产免费一级高清淫曰本片| 亚洲日产乱码一二三区别| 亚洲精品二区国产综合野狼| 免费一看一级毛片| 久久久久久久免费视频| 日韩精品无码免费专区网站| 国产成人不卡亚洲精品91| 亚洲免费在线视频播放| 亚洲中文字幕无码久久精品1| 蜜臀91精品国产免费观看| 最近免费中文字幕大全高清大全1 最近免费中文字幕mv在线电影 | 国产精品亚洲精品日韩已方| 欧美最猛性xxxxx免费| 国产免费无码AV片在线观看不卡| 亚洲午夜无码久久久久小说| 亚洲精品自产拍在线观看动漫| 亚洲精品无码av天堂| 国产免费变态视频网址网站| 成年人网站在线免费观看| 青青青国产手机频在线免费观看| 日本视频免费观看| 国产精品自拍亚洲|