<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
    ? JavaTM Architecture for XML Binding (JAXB) 提供了api 和工具用于自動映射XML文檔和Java對象。
    ?
    ? JAXB框架允許開發(fā)者執(zhí)行以下的操作:
    ?
    ? 通過schema 生成相應(yīng)的java 源文件
    ? 訪問以及更新相應(yīng)的java 源文件
    ? 配置java 源文件,生成相應(yīng)的schema

    ? JAXB 給了java 開發(fā)者一種有效的和標(biāo)準(zhǔn)的方式用于映射xml和java 代碼。java開發(fā)者使用JAXB能提供生產(chǎn)力,由于只需要寫很少的代碼,不需要成為xml方面的專家。JAXB 對于開發(fā)者來說更容易擴(kuò)展他們的應(yīng)用,使用XML或者web services技術(shù)。


    ? 看一個簡單的例子:
    ?
    ? 從xsd文件生成相應(yīng)的java 文件

    ? xsd 文件配置如下:
    ?
    ? <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    ?
    ? <xs:import namespace="http://www.w3.org/XML/1998/namespace"
    ??????? schemaLocation="http://www.w3.org/2001/xml.xsd" />
    ?
    ? <xs:complexType name="foo">
    ??? <xs:sequence>
    ????? <xs:element name="age" type="xs:int" />
    ??? </xs:sequence>
    ? </xs:complexType>
    ?
    ? <xs:element name="root" type="foo" />
    ?
    ? </xs:schema>

    ? 定義ant build :
    ? 主要的內(nèi)容如下:
    ?<path id="classpath">
    ??? <pathelement path="src" />
    ??? <pathelement path="classes" />
    ??? <pathelement path="schemas" />
    ??? <!--for use with bundled ant-->
    ??? <fileset dir="${jwsdp.home}" includes="jaxb/lib/*.jar" />
    ??? <fileset dir="${jwsdp.home}" includes="sjsxp/lib/*.jar" />
    ??? <fileset dir="${jwsdp.home}" includes="jwsdp-shared/lib/activation.jar" />
    ??? <fileset dir="${jwsdp.home}" includes="jwsdp-shared/lib/resolver.jar" />
    ? </path>
    ? 定義xjc任務(wù),用于從schema 中生成相應(yīng)的java 文件
    ? <taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
    ??? <classpath refid="classpath" />
    ? </taskdef>

    ? 執(zhí)行xjc
    ? <xjc schema="po.xsd" destdir="gen-src">
    ????? <produces dir="gen-src" includes="**/*.java" />
    ? </xjc>

    ? 執(zhí)行ant 任務(wù)后產(chǎn)生的java 文件如下:

    ? foo.java

    ? @XmlAccessorType(AccessType.FIELD)
    ? @XmlType(name = "foo", propOrder = {
    ??? "age"
    })
    public class Foo {

    ??? @XmlElement(type = Integer.class)
    ??? protected int age;

    ??? /**
    ???? * Gets the value of the age property.
    ???? *
    ???? */
    ??? public int getAge() {
    ??????? return age;
    ??? }

    ??? /**
    ???? * Sets the value of the age property.
    ???? *
    ???? */
    ??? public void setAge(int value) {
    ??????? this.age = value;
    ??? }

    }

    ObjectFactory.java 主要的產(chǎn)生類,作為工廠類

    @XmlRegistry
    public class ObjectFactory {

    ??? private final static QName _Root_QNAME = new QName("", "root");

    ??? /**
    ???? * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: generated
    ???? *
    ???? */
    ??? public ObjectFactory() {
    ??? }

    ??? /**
    ???? * Create an instance of {@link Foo }
    ???? *
    ???? */
    ??? public Foo createFoo() {
    ??????? return new Foo();
    ??? }

    ??? /**
    ???? * Create an instance of {@link JAXBElement }{@code <}{@link Foo }{@code >}}
    ???? *
    ???? */
    ??? @XmlElementDecl(namespace = "", name = "root")
    ??? public JAXBElement<Foo> createRoot(Foo value) {
    ??????? return new JAXBElement<Foo>(_Root_QNAME, Foo.class, null, value);
    ??? }

    }
    比較簡單的實(shí)現(xiàn),不過主要的工作還是用來通過java類來生成相應(yīng)的xml文件:
    測試方法:
    public static void main(String[] args) throws Exception {
    ??? ??
    ??????? JAXBContext context = JAXBContext.newInstance(ObjectFactory.class);
    ??????? ObjectFactory of = new ObjectFactory();
    ??????? Foo foo = new Foo();
    ??????? foo.setAge(11);
    ??????? JAXBElement<Foo> e = of.createRoot(foo);

    ??? ??? //用于輸出元素
    ??????? Marshaller marshaller = context.createMarshaller();
    ??????? marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
    ??????? FileOutputStream stream = new FileOutputStream(new File(args[0]));
    ??????? marshaller.marshal(e, stream);
    ??? }

    生成的xml如下:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <root>
    ??? <age>11</age>
    </root>




    posted on 2006-11-08 20:49 布衣郎 閱讀(2239) 評論(0)  編輯  收藏 所屬分類: webservies

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


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

    <2006年11月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    常用鏈接

    留言簿(12)

    隨筆分類(59)

    隨筆檔案(57)

    blog

    java

    uml

    搜索

    •  

    積分與排名

    • 積分 - 358087
    • 排名 - 156

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产成人久久一区二区三区| 国产一区二区三区在线免费观看| 2048亚洲精品国产| 阿v免费在线观看| 污污污视频在线免费观看| 国产在线精品一区免费香蕉| 亚洲中久无码不卡永久在线观看| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 免费在线不卡视频| 西西人体44rt高清亚洲| 两个人看的www高清免费观看| 亚洲中文字幕无码爆乳AV| 亚洲成人激情小说| 特色特黄a毛片高清免费观看| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 亚洲伊人久久大香线焦| h片在线观看免费| 亚洲乱码国产一区三区| 国产精品国产亚洲区艳妇糸列短篇| 国产免费无遮挡精品视频| 一区二区三区免费视频播放器| 久久亚洲精品视频| 青娱分类视频精品免费2| 亚洲欧美成aⅴ人在线观看| 99久久久国产精品免费牛牛| 亚洲国产成人va在线观看网址| 免费看大美女大黄大色| 亚洲性一级理论片在线观看| 成人免费无码大片a毛片| 亚洲国产日韩在线人成下载| 韩国日本好看电影免费看| 国产精品内射视频免费| 亚洲精品美女久久久久| 国产精品二区三区免费播放心| 在线免费观看h片| 亚洲fuli在线观看| 成人a免费α片在线视频网站| 亚洲人成免费电影| 亚洲精品国产成人影院| 国产成人高清亚洲一区91| 久久久综合亚洲色一区二区三区|