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

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

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

    隨筆-0  評論-3  文章-28  trackbacks-0
    一、 簡介
    Castor XML是一種XML數據綁定框架。
    XML的另外兩種主要API:DOM和SAX(Document Object Model和Simple API for XML),主要是從結構的角度去處理XML文件,而Castor XML是以對象的模式去處理XML文檔中的數據

    大多數情況下,轉換框架通過ClassDescriptor和FieldDescriptor來描述轉換時所需要的信息。

    二、 轉換框架
    轉換框架中最主要的兩個類是:org.exolab.castor.xml.Marshaller和org.exolab.castor.xml.Unmarshaller

    marshal: Marshaller.marshal(obj,writer);
    unmarshal: Unmarshaller.unmarshal(Person.class,reader);

    上面的這種轉換方式,只適合于按照默認方式進行轉化,如果要使用映射文件,需要采用以下方式。
    marshal:
    Mapping mapping = new Mapping();
    mapping.loadMapping(“mapping.xml”);
    Marshaller marshaller = new Marshaller(writer);
    marshaller.setMapping(mapping);
    marshaller.marshal(obj);
    Marshaller的5個marshal方法中,只有marshal(Object obj)這個方法不是靜態的,其他的四個都是靜態的marshal(obj,writer), marshal(obj,handler), marshal(obj,node)

    unmarshal:
    Mapping mapping = new Mapping();
    mapping .loadMapping(“mapping.xml”);
    Unmarshaller unm = new Unmarshaller(“Person.class”);//使用Person.class作為構造Unmarshaller的參數
    unm.setMapping(mapping);
    Person person = (Person)unm.unmarshal(reader);
    Unmarshaller中,object可以從reader中轉換而來,也可以從source、node轉換而來,靜態方法均是兩個參數,非靜態方法都是一個來源作為參數。

    三、 使用存在的Class和對象
    Castor幾乎可以將任何對象和XML進行轉換。當指定class的描述文件不存在時,轉換框架使用默認的reflection機制來獲得對象的信息。

    轉化對象存在的主要約束是:
    這些class必須有一個public而且default的構造函數;必須有adequate get/set方法。

    四、 類描述符(ClassDescriptor)
    org.exolab.castor.xml.XMLClassDescriptor
    類描述符提供轉換時所需的必要信息。ClassDescriptor不僅可以用于Castor XML,還可以用于Castor JDO

    類描述符包括一組字段描述符(FieldDescriptor)

    類描述符通常情況下有四種創建方式,兩種在編譯時(效率較高),兩種在運行時(較為方便)
    編譯時描述符:
    1. 讓需要被describe的類實現org.exolab.castor.xml.XMLClassDescriptor接口
    2. 使用Source Code Generator創建合適的descriptor
    運行時描述符:
    3. 默認,使用Castor的introspect機制
    4. 提供mapping文件,或者默認和配置文件并用

    使用”default introspection”機制必須為每一個要轉換的field配備對應的get/set方法;
    如果沒有get/set方法,但是是public的field,也可以以direct field access的方式被轉換;
    但是如果一個類中為有的成員定義了get/set方法,即使其他成員是public的,也不會被轉換;
    自動內省機制是自動觸發的。可以通過castor.properties文件控制自動轉換的特性,比如改變名稱轉換、基本型別是轉換為attribute還是element等。

    Mapping文件也可以用來描述要被轉換的類。mapping的裝載發生在marshal和unmarshal之前(org.exolab.castor.mapping.Mapping)

    posted on 2007-09-14 10:18 閱讀(1251) 評論(0)  編輯  收藏 所屬分類: 框架相關
    主站蜘蛛池模板: 亚洲精品乱码久久久久久按摩 | 国产AV日韩A∨亚洲AV电影| 亚洲av日韩av高潮潮喷无码| 亚洲手机中文字幕| 最近中文字幕大全中文字幕免费 | 亚洲色欲啪啪久久WWW综合网| yellow免费网站| 亚洲黄黄黄网站在线观看| 亚洲欧洲日产国产综合网| 亚洲av日韩综合一区久热| 麻豆国产VA免费精品高清在线| 亚洲av无码一区二区三区不卡| 亚洲AⅤ男人的天堂在线观看| 国产精品高清全国免费观看| 亚洲高清视频免费| 三级网站免费观看| 久久精品视频亚洲| 久久久久久国产a免费观看黄色大片| 亚洲中文字幕无码久久2017| 免费黄色电影在线观看| 亚洲国产主播精品极品网红| 精精国产www视频在线观看免费| 亚洲日韩乱码中文无码蜜桃臀网站| 亚洲欧洲免费视频| 亚洲人成亚洲人成在线观看 | 免费看大美女大黄大色| 看Aⅴ免费毛片手机播放| 国产亚洲一区区二区在线| 性无码免费一区二区三区在线| 亚洲小说图片视频| 国产成人青青热久免费精品| 亚欧国产一级在线免费| 亚洲国产成人久久一区WWW| 和老外3p爽粗大免费视频| 亚洲日本视频在线观看| 四虎永久在线精品免费观看地址 | 相泽南亚洲一区二区在线播放| 成年美女黄网站色大免费视频| 亚洲GV天堂无码男同在线观看| 国产香蕉九九久久精品免费| 美女被暴羞羞免费视频|