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

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

從XML到Java代碼的數據綁定

2019-11-18 11:02:51
字體:
來源:轉載
供稿:網友

本文轉自 IBM developerWorks 中國網站

xml 數據創建類


  數據綁定系列的第二篇是如何從 XML 數據限制中生成一個 java 語言。本文通過完整的代碼展現了如何生成類和代碼,并提供了如何定制您自己版本的建議。還沒有看過第一篇嗎?第一篇,"對象,無處不在的對象", 解釋了數據綁定是如何將 XML 和 Java 語言對象互為轉換。它比較了數據綁定和其它在 Java 程序中處理 XML 的方法, 并介紹了一個 XML 配置文檔示例。第一部分也介紹了使用 XML Schema 來約束數據。

  在深入 Java 程序和 XML 代碼之前,先快速回顧一下本系列第一部分所打下的基礎。

  在第一部分中,我們知道只要可以標識文檔的一組約束,就可以將文檔轉換成 Java 對象。那些約束為數據提供了接口。如 Web 服務配置文檔示例中所示,XML 文檔應當成為現有 Java 類的一個實例,并且從數據約束生成那個類。最后,會看到表示樣本 XML 文檔約束的 XML schema。

  假如對細節還有疑問,請回顧第一篇文章.

  打造基礎

  現在,可以著手從 XML schema 創建 Java 類。該類必須準確表示數據約束,并提供 Java 應用程序將使用的簡單讀方法和寫方法。開始之前,讓我們先回顧清單 1,查看為 WebServiceConfiguration 文檔定義的 XML schema。

  清單 1. 表示 Web 容器配置文檔數據接口的 XML schema

<?xml version="1.0"?>

<schema targetNamespace="http://www.enhydra.org"
      xmlns="http://www.w3.org/1999/xmlSchema"
      xmlns:enhydra="http://www.enhydra.org"


  <complexType name="ServiceConfiguration">
   <attribute name="name" type="string" />
   <attribute name="version" type="float" />
  </complexType>

  <element name="serviceConfiguration" type="ServiceConfiguration" />

  <complexType name="WebServiceConfiguration"
           baseType="ServiceConfiguration"
           derivedBy="extension">
   <element name="port">
    <complexType>
     <attribute name="     <attribute name="number" type="integer" />
     <attribute name="protected" type="string" />
    </complexType>
   </element>

   <element name="document">
    <complexType>
     <attribute name="root" type="string" />
     <attribute name="index" type="string" />
     <attribute name="error" type="string" />
    </complexType>
   </element>
  </complexType>

<element name="webServiceConfiguration" type="WebServiceConfiguration" />

</schema>

  生成代碼

  開始生成 Java 代碼之前,首先必須確定核心類的名稱。將使用 org.enhydra.xml.binding 包中的 SchemaMapper,它是 Enhydra 應用服務器實用程序類集合的一部分。還可以將任何必需的支持類放到這個包中。

  除了類名稱以外,還必須確定用來讀取和創建 XML 的 Java API。如上一篇文章中所討論過的,三種主要選擇是 SAX、DOM 和 JDOM。由于 SAX 僅僅適用于讀取 XML 文檔,因此它不適合創建 XML。由于在打包階段中要將 Java 對象轉換為 XML 表示,因此在此階段中需要創建 XML。這就將選擇的范圍縮小到 DOM 和 JDOM。在這兩種選擇都可用的情況下,本例中我選擇使用 JDOM API,僅為了顯示其功能性(并不僅僅因為我是它的合著者之一!)。

  最后,必須指出如何將 XML schema 提供給 SchemaMapper 類。通常,可以假設類的生成是脫機完成的(通過靜態 main 方法)。僅通過使 main 方法調用非靜態方法,還可以從運行時環境中使用類。做了這些決定后,就可以開始勾畫類的框架了。
QQ病毒 騰訊QQ空間代碼專題 PPT教程專題 ADSL應用面面俱到 fireworks教程專題 計算機和網絡技術基礎知識 校園網專題 網吧技術專題

  組裝 SchemaMapper 類框架

  要做的第一件事就是為要生成的代碼設置一些基本存儲器。必須能夠從每個執行映射的 XML schema 生成多個接口和實現。Java HashMap 正好滿足要求。鍵是接口或實現名稱以及映射表中的值,該值是將要輸出到新 Java 程序文件的實際代碼。還需要存儲每對接口/實現的屬性(屬性是在這兩種類之間共享的)。這里,我再次使用 HashMap。其中,鍵是接口名稱。但是,由于每個接口可能有多個屬性,因此該值是另一個具有屬性及其類型的 HashMap。最后,必須存儲 XML schema 的名稱空間,因為 JDOM 將使用這個名稱空間來訪問 XML schema 中的結構。所有這些具體信息都足以初步勾畫出新類的框架,新類在清單 2 中。

  還請注重在清單 2 中已添加了兩個需要使用的基本方法:其中一個方法需要使用 XML schema 的 URL 來執行生成(答應它在網絡可訪問 schema 以及本地 schema 下運行),另一個方法將類輸出到指定的目錄中。最后,簡單的 main 方法將 XML schema 看作一個變量,然后執行生成。

  清單 2. SchemaMapper 類的框架 package org.enhydra.xml.binding;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;
import java.util.List;

// JDOM classes used for document representation
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.NoSUChAttributeException;
import org.jdom.NoSuchChildException;
import org.jdom.input.SAXBuilder;

/**
* <p>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 云南省| 砀山县| 西乌珠穆沁旗| 南开区| 资源县| 昭平县| 连江县| 泽普县| 邵武市| 迁安市| 百色市| 陕西省| 彭州市| 彭泽县| 包头市| 新兴县| 南阳市| 韶关市| 富宁县| 习水县| 巴彦淖尔市| 正定县| 阿鲁科尔沁旗| 奉贤区| 同仁县| 乐昌市| 聂拉木县| 高唐县| 镶黄旗| 永定县| 班戈县| 安溪县| 寿宁县| 江安县| 津南区| 平昌县| 依兰县| 霍州市| 塘沽区| 普定县| 安远县|