国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JAXB解析xml轉換為POJO

2019-11-10 17:15:23
字體:
來源:轉載
供稿:網友

一。概述

JAXB(java Architecture for xml Binding)是由 J2EE 體系中標準的 XML schema 和 Java 數據綁定框架,開發者可以使用 JAXB 方便地在 Java 應用程序中進行XML 數據和 Java 對象的轉換。JAXB 提供了將 XML 文檔解析為 Java 內容樹的方法,以及將 Java 內容樹重新寫回 XML 文檔的方法。同時 JAXB 還提供了基于 XML schema 生成 Java 類以及從 Java 類生成 XML schema 的支持。二。JAXB 框架分為以下三個組成部分:

schema 編譯器:schema 編譯器以 XML schema 為輸入生成和 schema 相對應的 Java 類集,生成的 Java 類中會根據 schema 的結構自動包含了相應的 JAXB 注解。     比方說 schema 里的一個元素映射的 Java 類會自動用 @XmlType 注解加以標注,一個元素的屬性所映射的 Java 字段會自動用 @XmlElement 注解加以標注;

schema 生成器:schema 生成器以包含 JAXB 注解的 Java 類集為輸入生成相應的 XML schema。比方說一個包含 @XmlType 注解的 Java 類在生成的schema 中會被映射為一個元素;

JAXB 運行環境:JAXB 運行時環境提供了兩個基本的操作用于 XML 文檔的訪問,操作以及驗證等等:marshal、unmarshal,這兩個操作也是 XML 和 Java 綁定的基礎。Marshal 是指將一個內存對象以 XML 文檔形式進行編組處理的過程,unmarshal 則是一個相反的過程,將一個 XML 文檔解析為內存對象的過程。

三。JAXB基礎---XML SchemaXML schema 是 XML 文檔的格式定義,是 DTD 的替代產品用于約束 XML 文檔內容及結構,比如它定義了 XML 文檔可以出現的元素,元素出現的順序,元素具有的屬性等。XML schema 本身就是一個 XML 文檔,因此天然具有了 XML 的可擴展性。同時 XML schema 對 XML 數據類型提供了更為豐富的支持。JAXB 框架的基礎就是 XML schema,一個使用 JAXB 的典型場合就是根據業務數據模型需要先寫出 XML schema,然后利用 JAXB 框架的綁定編譯器直接生成 XML 相應的 Java 類集。四。JAXB與WEB服務的關系

JAX-WS 型 Web 服務將 XML 和 Java 之間的綁定代理給了 JAXB 來完成,也就是說在 Web 服務調用過程中的 XML 數據和 Java 對象間轉換都是由 JAXB 框架來完成的。Web 服務中接口引用的參數、返回類型等等數據類型描述都是在關聯的 XML schema 中定義的,而 JAXB 框架也正是根據這個 Web 服務關聯的 XML schema 來完成于 Java 對象之間的相互映射。從 Java 到 XML schema 的映射開發者可以通過 JAXB 提供的注解來完成,在編程 Java 類時可以使用 JAXB 豐富的注解輕松地完成綁定定制。五。使用JAXB來定制WEB服務@XmlRootElement  注解用于標注類或枚舉類型,用它標注的類在映射后的 schema 中會以一個全局元素的形式出現

參數:name   定制映射的 schema 全局元素的名稱,一般來說以 @XmlRootElement 標注的類在相應的 XML 文檔中會以最外層或根節點形式出現。

      namespace    定義這個根節點命名空間, XML元素的名稱空間名例:

@XmlaccessorType  定義映射這個類中的何種類型需要映射到XML。      可接收四個參數,分別是:

      XmlAccessType.FIELD:映射這個類中的 PRivate 非靜態所有字段到XML

      XmlAccessType.PROPERTY:映射這個類中的屬性(get/set方法)到XML

      XmlAccessType.PUBLIC_MEMBER:將這個類中的所有public的field或property同時映射到XML(默認)

      XmlAccessType.NONE:不映射例如:@XmlAccessorType(XmlAccessType.FIELD)           @XmlAccessorType(value = XmlAccessType.PROPERTY) 

@XmlType  @XmlType 注解用于標注類或枚舉類型,用它標注的類在映射后的 schema 中中會以一個 XML 復雜數據類型的形式出現

參數:propOrder        指定映射XML時的節點順序,來指定輸出順序,來定制映射后的復雜數據類型的內容順序

         factoryClass     指定UnMarshal時生成映射類實例所需的工廠類,默認為這個類本身

         factoryMethod  指定工廠類的工廠方法

         name               定義XML Schema中type的名稱,定制映射的 XML 數據類型的名稱

         namespace      指定Schema中的命名空間

例:

@XmlElement  1)@XmlElement 注解用于標注 Javabean 的屬性,用它標注的屬性在映射后的 schema 中以元素的形式出現,所有 Javabean 屬性映射的元素組合成為  @XmlType 映射的復雜數據類型.2)指定一個字段或get/set方法映射到XML的節點。如,當一個類的XmlAccessorType 被標注為PROPERTY時,在某一個沒有get/set方法的字段上標注此注解,即可將該字段映射到XML。

參數:defaultValue  指定節點默認值

           name             指定節點名稱,定制映射后的 XML 元素的名稱

          namespace    指定節點命名空間

          required         指定該元素是否必須出現.是否必須(默認為false)required() 為 true,則將Javabean 屬性映射到一個 minOccurs="1" 的 XML 模式元素聲明                              。maxOccurs為 "1" 表示單個賦值的屬性,maxOccurs 為 "unbounded" 則表示多個賦值的屬性。

         nillable           該字段是否包含 nillable="true" 屬性(默認為false)

         type               定義該字段或屬性的關聯類型例:

@XmlAttribute  指定一個字段或get/set方法映射到XML的屬性。用于標注 Javabean 屬性,用它標注的屬性在映射后的 schema 中以元素屬性形式表現

參數:name             指定屬性名稱,定制映射后的名稱

         namespace    指定屬性命名空間

         required         是否必須(默認為false,指定是否映射后的屬性為必須出現的例:

這個 Java 類在映射后的 Web 服務 schema 中會表現為:

@XmlTransient  定義某一字段或屬性不需要被映射為XML。如,當一個類的XmlAccessorType 被標注為PROPERTY時,在某一get/set方法的字段上標注此注解,那么該屬性則不會被映射。

@XmlElementWrapper  為數組元素或集合元素定義一個父節點。如,類中有一元素為List items,若不加此注解,該元素將被映射為

    <items>...</items>

    <items>...</items>

這種形式,此注解可將這個元素進行包裝,如:

    @XmlElementWrapper(name="items")     @XmlElement(name="item")     public List items;

將會生成這樣的XML樣式:

    <items>

        <item>...</item>

        <item>...</item>

    </items>

@XmlJavaTypeAdapter  自定義某一字段或屬性映射到XML的適配器。如,類中包含一個接口,我們可以定義一個適配器(繼承自javax.xml.bind.annotation.adapters.XmlAdapter類),指定這個接口如何映射到XML。

@XmlSchema 配置整個包的namespace,這個注解需放在package-info.java文件中。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高阳县| 双桥区| 斗六市| 德昌县| 云和县| 郴州市| 南江县| 错那县| 宁乡县| 南安市| 丹巴县| 星子县| 鄂托克旗| 琼中| 沂源县| 青海省| 巴林左旗| 菏泽市| 乌鲁木齐县| 东乌珠穆沁旗| 蕉岭县| 呼图壁县| 义马市| 施甸县| 神农架林区| 宜兰县| 余姚市| 页游| 呈贡县| 濉溪县| 赫章县| 松原市| 枝江市| 库尔勒市| 突泉县| 含山县| 尼木县| 元江| 密山市| 凯里市| 华池县|