如鵬網 大學生計算機學習社區

          CowNew開源團隊

          http://www.cownew.com 郵件請聯系 about521 at 163.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks
          對象圖
          XStream支持對象圖,也就是“反序列化”一個對象的時候將會保持原來的對象引用關系,這其中包括循環引用關系。?我們可以指定XStream是使用XPath還是IDs來實現對象引用的這種處理方式,指定的方式就是調用XStream的setMode方法,此方法有XStream.XPATH_REFERENCES、XStream.ID_REFERENCES、XStream.NO_REFERENCES三個選項。其意義分別如下:
          XStream.XPATH_REFERENCES:這是默認值。這個選項指定XStream使用XPath引用方式處理重復引用。
          XStream.ID_REFERENCES:這個選項指定XStream使用ID引用方式處理重復引用。當使用手寫XML的時候,這種方式可能更好用一些。?
          XStream.NO_REFERENCES:這個選項指定XStream不支持圖引用,將對象結構當做樹狀處理。重復的引用將會被認為是兩個獨立的對象,而循環引用將會導致一個異常。這種方式速度會更快一些,并且相對于前兩者來說占用更少的內存。
          自定義轉換器
          XStream對String, Date, int, boolean等基本類型以及Map, List, Set, Properties等集合類型提供了轉換器,因此這些類型可以輕松的實現序列化和反序列化。如果您使用的數據類型不被XStream支持,那么就需要自定義數據轉換器。自定義轉換器要實現com.thoughtworks.xstream.converters.Converter接口,這個接口定義了如下三個方法:
          boolean canConvert(Class type);
          void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context);
          Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context);
          這三個方法分別表示:type這個類型的數據此轉換器是否有能力轉換;將對象進行編組(marshal)為XML格式;將XML格式反編組(unmarshal)為對象。
          我們通常無需直接實現該接口,而是繼承com.thoughtworks.xstream.converters.MarshallingContext.AbstractBasicConverter抽象類,然后覆蓋:
          protected String toString(Object obj)
          protected Object fromString(String str);
          兩個方法即可。可以參考com.thoughtworks.xstream.converters.extended.SqlTimestampConverter的實現代碼。
          轉換器開發完畢以后調用XStream類的public void registerConverter(Converter converter)方法注冊轉換器。
          posted on 2007-02-13 09:38 CowNew開源團隊 閱讀(822) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 顺昌县| 石泉县| 鄂伦春自治旗| 桂阳县| 霍州市| 海原县| 高雄市| 凌海市| 太谷县| 祁门县| 长沙市| 岗巴县| 崇左市| 江津市| 攀枝花市| 都江堰市| 五华县| 包头市| 克拉玛依市| 阿克苏市| 东乌| 光山县| 陈巴尔虎旗| 西乡县| 永丰县| 娱乐| 抚州市| 板桥市| 沭阳县| 墨脱县| 镇宁| 海伦市| 德兴市| 防城港市| 平乡县| 宜丰县| 邵阳市| 阳新县| 上饶县| 金乡县| 宁阳县|