<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观看 | 97在线免费视频| 免费成人高清在线视频| www视频免费看| 国产精品无码免费视频二三区| 亚洲免费无码在线| 亚洲综合成人网在线观看| 美丽姑娘免费观看在线观看中文版| 最新猫咪www免费人成| 中文字幕亚洲图片| 亚洲va精品中文字幕| 在线观看亚洲电影| 最新国产乱人伦偷精品免费网站 | 国产偷国产偷亚洲清高APP| 精品无码无人网站免费视频 | 青娱乐在线免费观看视频| 久久久久久久99精品免费观看| 亚洲AV无码一区二区乱子伦| 亚洲国产无线乱码在线观看| 中文字幕免费不卡二区| 亚洲人成电影在在线观看网色| 美女被免费网站视频在线| 国产亚洲精品看片在线观看| 亚洲大尺度无码无码专线一区| 日本成人在线免费观看| 亚洲啪啪免费视频| 亚洲视频在线免费观看| 亚洲国产精品一区二区久久hs| 看免费毛片天天看| 狠狠色伊人亚洲综合成人| 中文字幕免费观看全部电影| 国产成人免费一区二区三区| jizz免费一区二区三区| 国产又黄又爽又刺激的免费网址| 丰满妇女做a级毛片免费观看| 国产aa免费视频| 欧美激情综合亚洲一二区| 全免费一级毛片在线播放| 亚洲一级黄色大片| 亚洲日本一区二区一本一道|