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

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

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

    Jibx簡單示例

    @import url(http://m.tkk7.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
    首先從 JiBX 網站下載 JiBX,當前最新版本是 beta 3。解開下載的 zip 文件,里面有一個 lib 目錄,包含了 bcel.jar, jibx-bind.jar, jibx-extras.jar, jibx-run.jar, xpp3.jar 五個 jar 文件。bcel.jar, jibx-bind.jar 只有在 binding compiler 的時候才用得到。jibx-extras.jar 是一個可選的工具包,里面有一些測試和驗證的工具類。 
    1.定義一個我們將要處理 XML 文件,文件名為 data.xml,內容如下: 

    <customer> 
    <person> 
      
    <cust-num>123456789</cust-num> 
      
    <first-name>John</first-name> 
      
    <last-name>Smith</last-name> 
    </person> 
    <street>12345 Happy Lane</street> 
    <city>Plunk</city> 
    <state>WA</state> 
    <zip>98059</zip> 
    <phone>888.555.1234</phone> 
    </customer> 
    這個 XML 文件非常簡單,共有十個元素,沒有屬性。根元素 customer 有 person, street, city, state, zip, phone 六個子元素。其中元素 person 有 cust-num, first-name, last-name 三個子元素。 
    2.接著定義兩個 Java 類 Customer 和 Person,也采用最簡單的方式,用對象的域值對應元素,內容如下: 

    public class Customer { 
      
    public Person person; 
      
    public String street; 
      
    public String city; 
      
    public String state; 
      
    public Integer zip; 
      
    public String phone; 


    public class Person { 
      
    public int customerNumber; 
      
    public String firstName; 
      
    public String lastName; 
    這個兩個類沒有任何方法,夠簡單吧!或許你已經看出來了,Customer 類的七個 field 對應的是 XML 文件中 customer 元素的七個子元素。Person 類的三個 field 對應的是 person 元素的三個子元素。在 Person 類的 field 的名稱并不是和 person 元素的子元素名稱完全相等,這是遵守 Java 編程規范 field 命名的需要,雖然不相等,但這不重要,可以在綁定定義文擋中把它們一一對應起來。 
    3.綁定定義文擋 
    綁定定義文擋是依據綁定定義規范將 XML 數據和 Java 對象綁定的 XML 文擋。文件名為 binding.xml,內容如下: 


    binding.xml 文件中的 name 和 field 屬性分別將 XML 中的元素和 Java 對象中的 field 一一對應并綁定起來。 

    <mapping name="customer" class="Customer"> 
    mapping 元素的 name 和 class 屬性將 customer 根元素和 Customer 類綁定在一起。 

    <structure name="person" field="person"> 

    public Person person; 
    上面兩行定義了 person 是 Customer 的 field,同時也把 person 元素和 person 類綁定在一起。 

    <binding> 
    <mapping name="customer" class="Customer"> 
      
    <structure name="person" field="person"> 
       
    <value name="cust-num" field="customerNumber"/> 
       
    <value name="first-name" field="firstName"/> 
       
    <value name="last-name" field="lastName"/> 
      
    </structure> 
      
    <value name="street" field="street"/> 
      
    <value name="city" field="city"/> 
      
    <value name="state" field="state"/> 
      
    <value name="zip" field="zip"/> 
      
    <value name="phone" field="phone"/> 
    </mapping> 
    </binding> 
    4.執行 Binding Compiler 過程 
    以下命令是在 Linux 下執行,如果是 Windows 平臺請轉換成相應的命令 

    #javac Person.java 
    #javac 
    -classpath . Customer.java 
    #java 
    -jar lib/jibx-bind.jar binding.xml 
    執行完后,在當前目錄多了四個 class 文件,分別是 Person.class, Customer.class, JiBX_bindingCustomer_access.class, JiBX_bindingFactory.class。 
    5.執行 binding runtime 過程 
    接著寫一個簡單的讀取 data.xml 測試程序 Test.java,內容如下: 

    import java.io.FileInputStream; 
    import java.io.FileNotFoundException; 

    import org.jibx.runtime.JiBXException; 
    import org.jibx.runtime.IBindingFactory; 
    import org.jibx.runtime.BindingDirectory; 
    import org.jibx.runtime.IUnmarshallingContext; 

    class Test { 
      
    public static void main(String[] args) { 
      
    try
        IBindingFactory bfact 
    = BindingDirectory.getFactory(Customer.class); 
        IUnmarshallingContext uctx 
    = bfact.createUnmarshallingContext(); 
        Customer customer 
    = (Customer)uctx.unmarshalDocument(new FileInputStream("data.xml"), null); 
        Person person 
    = customer.person; 

        System.out.println(
    "cust-num:" + person.customerNumber); 
        System.out.println(
    "first-name:" + person.firstName); 
        System.out.println(
    "last-name:" + person.lastName); 
        System.out.println(
    "street:" + customer.street); 
      }
    catch(FileNotFoundException e){ 
        System.out.println(e.toString()); 
      }
    catch(JiBXException e){ 
        System.out.println(e.toString()); 
      } 

    編譯并運行這個測試程序 

    #javac -classpath .:lib/jibx-run.jar Test.java 
    #java 
    -cp .:lib/jibx-run.jar:lib/xpp3.jar Test 
    程序運行的結果是 

    cust-num:123456789 
    first
    -name:John 
    last
    -name:Smith 
    street:
    12345 Happy Lane  


    Kyle Wang

    posted on 2011-11-28 17:16 王樹東 閱讀(2534) 評論(0)  編輯  收藏 所屬分類: Java Skills Learning and Sharing 、Code Templates

    <2011年11月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    導航

    統計

    公告

    常用鏈接

    留言簿

    隨筆分類(17)

    隨筆檔案(15)

    文章分類(4)

    文章檔案(5)

    收藏夾(4)

    Algorithm

    Design

    Environment Setup

    Installer

    Maven

    MINA

    OS

    Skills for Java

    VIM

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费网站看v片在线香蕉| 18女人水真多免费高清毛片| 免费a级毛片高清视频不卡| 久久精品国产亚洲AV无码偷窥| 免费无码H肉动漫在线观看麻豆| 伊伊人成亚洲综合人网7777| www一区二区www免费| 国产精品亚洲产品一区二区三区| 免费观看四虎精品成人| 国产精品亚洲玖玖玖在线观看| 免费一级做a爰片久久毛片潮| 亚洲国产一区明星换脸| 人碰人碰人成人免费视频| 亚洲一区精品无码| 一区二区三区四区免费视频| 亚洲欧洲视频在线观看| 18禁止观看免费私人影院| 亚洲永久在线观看| 免费无遮挡无码永久在线观看视频| 男女超爽视频免费播放| 亚洲日本一区二区三区在线| 三年片在线观看免费大全电影| 亚洲成人黄色在线观看| 韩国18福利视频免费观看| jizz在线免费观看| 78成人精品电影在线播放日韩精品电影一区亚洲 | 7m凹凸精品分类大全免费| 亚洲最新在线视频| 四虎国产精品免费视| 日本高清不卡aⅴ免费网站| 亚洲人成7777影视在线观看| 亚洲AV成人精品日韩一区18p| 最近2019中文免费字幕在线观看| 亚洲六月丁香六月婷婷色伊人| 日本人的色道www免费一区| 中文字幕在线免费看| 亚洲av永久无码精品三区在线4| 亚洲av区一区二区三| 99精品视频在线免费观看 | 一区二区三区免费精品视频| 亚洲网站在线观看|