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

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

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

    閑人野居
    好好學(xué)習(xí),天天向上
    posts - 57,  comments - 137,  trackbacks - 0

    ??? jibx又一個(gè)不錯(cuò)的xml綁定工具,隨著這段時(shí)間的使用,感覺越來越隨心應(yīng)手了。和jaxb一樣,都是屬于xml綁定工具。不同于jaxb,jibx使用java字節(jié)碼enhance技術(shù),而jaxb更多在于源代碼生成技術(shù)。jibx的工作主要在于前期,也就是進(jìn)行字節(jié)碼綁定,這一部分基本上都是在編譯器完成的。在運(yùn)行期,不需要任何的配置,由于字節(jié)碼已經(jīng)嵌入java類中。而jaxb更多在于運(yùn)行期綁定,通過元數(shù)據(jù)或者xsd文件進(jìn)行解析綁定。相對(duì)于jaxb來說,jibx更加的快速以及靈活。不過,前期的編譯工作還是需要花費(fèi)一點(diǎn)時(shí)間熟悉。下面通過一個(gè)簡(jiǎn)單的例子來說明,例子是其官方自帶的。
    ??? 首先從網(wǎng)上下載jibx包 http://jibx.sourceforge.net/ 為其主要的官網(wǎng)。
    ??? 假設(shè)有兩個(gè)類Person和Customer
    ??? 使用最簡(jiǎn)單的方式聲明:
    ??? 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;
    ?? }

    xml 數(shù)據(jù)結(jié)構(gòu)如下:
    <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>
    ?
    為了匹配相應(yīng)的數(shù)據(jù),jibx需要相應(yīng)的映射文檔,用于匹配java類和xml數(shù)據(jù),如下:
    <binding>
    ? <mapping name="customer" class="org.jibx.starter.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>? ?
    ?
    當(dāng)然手寫是比較費(fèi)力的,還好,jibx工具提供了相應(yīng)的生成方法:jibxtools包提供了BindingGenerator類,用于生成相應(yīng)的xml文件
    可以直接在cmd下執(zhí)行:java -jar? jibxtools.jar -f bind.xml Customer
    如果沒有復(fù)雜的屬性,如枚舉和數(shù)組,直接就可以生成了。
    現(xiàn)在開始編譯期的最后一步:綁定類
    同樣可以使用cmd的方式或者ant task來執(zhí)行
    java -jar jibx-bind.jar binding.xml
    主要的執(zhí)行類為org.jibx.binding.Compile,也可以直接運(yùn)行此類
    如果你有java反編譯器,可以查看相應(yīng)的類文件已經(jīng)更改,增加了相應(yīng)的jibx信息,并且增加了相應(yīng)的jibx_binding*_access類。
    在運(yùn)行期,你只需要使用以下的代碼來進(jìn)行處理就行了,由于jibx 使用最新的xml pull技術(shù),執(zhí)行的速度還是比較快的。
    ?IBindingFactory bfact = BindingDirectory.getFactory(Customer.class);
    ?// unmarshal customer information from file
    ?IUnmarshallingContext uctx = bfact.createUnmarshallingContext();
    ?FileInputStream in = new FileInputStream("data.xml");
    ?Customer customer = (Customer)uctx.unmarshalDocument(in, null);
    //marshal
    IMarshallingContext mctx = bfact.createMarshallingContext();
    mctx.setIndent(2);
    FileOutputStream out = new FileOutputStream("data.xml");
    mctx.marshalDocument(customer, "UTF-8", null, out);

    如果你的xml數(shù)據(jù)結(jié)構(gòu)比較固定,可以考慮使用。

    posted on 2007-02-26 20:44 布衣郎 閱讀(4363) 評(píng)論(0)  編輯  收藏 所屬分類: webservies

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    <2007年2月>
    28293031123
    45678910
    11121314151617
    18192021222324
    25262728123
    45678910

    常用鏈接

    留言簿(12)

    隨筆分類(59)

    隨筆檔案(57)

    blog

    java

    uml

    搜索

    •  

    積分與排名

    • 積分 - 357872
    • 排名 - 156

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: gogo全球高清大胆亚洲| 亚洲黄色免费电影| 免费一区二区三区四区五区| 亚洲国产av美女网站| 亚洲成人免费网址| 亚洲成aⅴ人片在线影院八| 四虎影视成人永久免费观看视频 | 无码免费又爽又高潮喷水的视频| 日韩免费一级毛片| 亚洲av无码无线在线观看| 免费看的成人yellow视频| 亚洲av无码一区二区三区天堂| 成年性午夜免费视频网站不卡| 亚洲综合色丁香婷婷六月图片| 午夜毛片不卡高清免费| 理论秋霞在线看免费| 国产精品亚洲高清一区二区 | 视频免费在线观看| 久久亚洲AV无码精品色午夜麻| 日韩视频免费在线观看| 久久久亚洲欧洲日产国码aⅴ| 99爱在线精品免费观看| 97se亚洲国产综合自在线| 久久不见久久见中文字幕免费| 久久精品国产亚洲av瑜伽| 精品亚洲一区二区三区在线观看| 中文字幕无码一区二区免费| 亚洲一区影音先锋色资源| 成年人性生活免费视频| 一个人免费观看日本www视频| 久久精品国产精品亚洲精品| 亚欧在线精品免费观看一区| 亚洲国产精品无码久久98| 亚洲伊人久久综合中文成人网 | 99精品全国免费观看视频| 国产精品亚洲专区在线播放| 国产h视频在线观看免费| 亚洲乱亚洲乱妇24p| 亚洲日韩一页精品发布| 免免费国产AAAAA片| 四虎影视久久久免费观看|