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

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

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

    閑人野居
    好好學習,天天向上
    posts - 57,  comments - 137,  trackbacks - 0
    ? JavaTM Architecture for XML Binding (JAXB) 提供了api 和工具用于自動映射XML文檔和Java對象。
    ?
    ? JAXB框架允許開發者執行以下的操作:
    ?
    ? 通過schema 生成相應的java 源文件
    ? 訪問以及更新相應的java 源文件
    ? 配置java 源文件,生成相應的schema

    ? JAXB 給了java 開發者一種有效的和標準的方式用于映射xml和java 代碼。java開發者使用JAXB能提供生產力,由于只需要寫很少的代碼,不需要成為xml方面的專家。JAXB 對于開發者來說更容易擴展他們的應用,使用XML或者web services技術。


    ? 看一個簡單的例子:
    ?
    ? 從xsd文件生成相應的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 :
    ? 主要的內容如下:
    ?<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任務,用于從schema 中生成相應的java 文件
    ? <taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
    ??? <classpath refid="classpath" />
    ? </taskdef>

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

    ? 執行ant 任務后產生的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 主要的產生類,作為工廠類

    @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);
    ??? }

    }
    比較簡單的實現,不過主要的工作還是用來通過java類來生成相應的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

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


    網站導航:
     

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

    常用鏈接

    留言簿(12)

    隨筆分類(59)

    隨筆檔案(57)

    blog

    java

    uml

    搜索

    •  

    積分與排名

    • 積分 - 358033
    • 排名 - 156

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲成a人片在线观看日本麻豆| 国产人妖ts在线观看免费视频| 永久免费不卡在线观看黄网站| 99re6在线精品视频免费播放| 日本免费一区二区久久人人澡| 日韩视频在线精品视频免费观看| 国产精品成人免费视频网站京东| 国内外成人免费视频| 又大又粗又爽a级毛片免费看| 亚洲成Av人片乱码色午夜| 337p日本欧洲亚洲大胆精品555588| 亚洲午夜电影在线观看| 亚洲GV天堂GV无码男同| 国产又黄又爽又大的免费视频| 日本人的色道免费网站| 亚洲成年人啊啊aa在线观看| 日本激情猛烈在线看免费观看 | 青青青青青青久久久免费观看| 亚洲熟伦熟女新五十路熟妇| 亚洲人成片在线观看| 妻子5免费完整高清电视| 亚洲中文字幕无码爆乳| 男女作爱在线播放免费网站| 久久久亚洲欧洲日产国码二区| 亚洲阿v天堂在线2017免费 | 婷婷精品国产亚洲AV麻豆不片 | 国产在线观看www鲁啊鲁免费| 久久亚洲精品成人无码网站| 日韩亚洲国产高清免费视频| 色天使亚洲综合一区二区| 最近新韩国日本免费观看 | 久久久无码精品亚洲日韩蜜桃 | 免费精品国产自产拍在线观看 | 全免费a级毛片免费看不卡| 青青草国产免费国产是公开| 亚洲AV无码乱码国产麻豆| 免费看又黄又爽又猛的视频软件| 国产亚洲av片在线观看16女人| 成人嫩草影院免费观看| 国产免费小视频在线观看| 国产免费牲交视频免费播放|