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

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

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

    posts - 6,  comments - 7,  trackbacks - 0


    從去年12月份還是學(xué)習(xí)Java到現(xiàn)在已經(jīng)將近3個月了,現(xiàn)在已經(jīng)很有必要對以前所學(xué)的知識進(jìn)行一次系統(tǒng)的復(fù)習(xí)。而重新復(fù)習(xí)最好的辦法就是將最近剛完成,但不完善的Xml數(shù)據(jù)配置的Web程序,進(jìn)行一次重構(gòu)。

    其中需要重新復(fù)習(xí)的知識主要內(nèi)容如下:

    1.              Jaxb

    2.              XmlSechema

    3.              JSF(JavaServer Faces)

    4.              Html ,CSS ,Javascript

    5.              Java: a) 類的繼承

     b) 反射:實(shí)現(xiàn)內(nèi)存列表的搜索。

    1、知識回顧

    1.1 JAXB  

    1.簡介:(Java Architecture for XML Binding) 是一個業(yè)界的標(biāo)準(zhǔn),是一項(xiàng)可以根據(jù)XML Schema產(chǎn)生Java類的技術(shù)。結(jié)構(gòu)圖如圖1-1


    結(jié)構(gòu)圖如圖1-1

    2.參考資源:http://java.sun.com/developer/technicalArticles/WebServices/jaxb/

                        https://jaxb.dev.java.net/

    3.例子:將一個xml文件轉(zhuǎn)換成一個Java類。

             a) xml文件結(jié)構(gòu)

    VOUTPUT.xml文件:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

    <VOutput>

        <Items>

            <ObjVOutput>

                <REF>1</REF>

                <Station_ID>80001</Station_ID>

                <PHYSICAL_OUTPUT_CHANNEL>4</PHYSICAL_OUTPUT_CHANNEL>

                <DEVICE_TYPE>Monitor</DEVICE_TYPE>

                <output_device_type>21</output_device_type>

                <OUTPUT_DEVICE_NUMBER>4</OUTPUT_DEVICE_NUMBER>

                <DESCRIPTION>Monitor-4</DESCRIPTION>

                ……

            </ObjVOutput>

    <ObjVOutput>

                <REF>1</REF>

                <Station_ID>80001</Station_ID>

                <PHYSICAL_OUTPUT_CHANNEL>4</PHYSICAL_OUTPUT_CHANNEL>

                 ……

            </ObjVOutput>

                       ……

        </Items>

    </VOutput>

    b) Schema-Derived Classes(XML Schema對應(yīng)的類)

             1)生成VOUTPUT.xsd

    VOUTPUT.xsd文件:

    <?xml version="1.0" standalone="yes"?>

    <xs:schema id="VOutput" xmlns=""

             xmlns:xs="http://www.w3.org/2001/XMLSchema"

             xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">

             <xs:element name="VOutput" >

                       <xs:complexType>

                                <xs:choice>

                                         <xs:element name="Items" type="ItemsType">

                                         </xs:element>

                                </xs:choice>

                       </xs:complexType>

             </xs:element>

             <xs:complexType name="ItemsType">

                       <xs:sequence>

                                <xs:element name="ObjVOutput" type="ObjVOutputType"

                                         minOccurs="0" maxOccurs="unbounded">

                                </xs:element>

                       </xs:sequence>

             </xs:complexType>

             <xs:complexType name="ObjVOutputType">

                       <xs:sequence>

                                <xs:element name="REF" type="xs:int" minOccurs="0" />

                                <xs:element name="Station_ID" type="xs:int"

                                         minOccurs="0" />

                                <xs:element name="PHYSICAL_OUTPUT_CHANNEL" type="xs:int"

                                         minOccurs="0" />

                                <xs:element name="DEVICE_TYPE" type="DeviceType"

                                         minOccurs="0" />

                                ……

                       </xs:sequence>

             </xs:complexType>

             <xs:simpleType name="DeviceType">

                       <xs:restriction base="xs:string">

                                <xs:enumeration value="Monitor" />

                                <xs:enumeration value="VCR" />

                                <xs:enumeration value="Standard Device" />

                                <xs:enumeration value="Smart Device" />

                                <xs:enumeration value="Trunk" />

                                <xs:enumeration value="Standby VCR" />

                                <!-- and so on ... -->

                       </xs:restriction>

             </xs:simpleType>

    </xs:schema>

    在這里我是先通過c#的小程序生產(chǎn)一個xsd文件,然后再對其進(jìn)行簡單的修改。

    C#程序很簡單,代碼如下:

    System.Data.DataSet ds = new System.Data.DataSet();

                ds.ReadXml(xmlfile); //xmlfile表示xml文件的路徑

                ds.WriteXmlSchema(xsdfile);//xsdfile表示要存儲的xsd文件的路徑

    通過代碼生成的xsd文件需要進(jìn)一步修改。

    有關(guān)XML Schema學(xué)習(xí)資源參考:http://www.w3schools.com/xpath/default.asp

     2)根據(jù)schema文件xsd生成java文件

    這里通過小工具“xjc”實(shí)現(xiàn),下載地址:https://jaxb.dev.java.net/ 下載后可以在…jaxb-ri-20071219"bin"文件夾下找到。使用示例:

    xjc -d "D:"... "imatrix"src" -p " jaxb.voutput" "D:"... "VOUTPUT.xsd"

    -d <dir>              指定生成的文件的存放路徑

    “D:"... "imatrix"src”:        表示java文件生成后導(dǎo)入的文件夾

    -p <pkg>            指定目標(biāo)包

    "D:"... "VOUTPUT.xsd":表示schema文件路徑(包括文件名)。

    最后生成的java文件圖1-2所示:

    1-2

    C)代碼分析:

    VOutput.java:

    @XmlRootElement(name = "VOutput")

    publicclass VOutput {

        @XmlElement(name = "Items")

        protected ItemsType items;

        public ItemsType getItems() {

            returnitems;

        }

        publicvoid setItems(ItemsType value) {

            this.items = value;

        }

    }

    ItemsType.java

    publicclass ItemsType {

        @XmlElement(name = "ObjVOutput")

        protected List<ObjVOutputType> objVOutput;

        public List<ObjVOutputType> getObjVOutput() {

            if (objVOutput == null) {

                objVOutput = new ArrayList<ObjVOutputType>();

            }

            returnthis.objVOutput;

        }

    }

    ObjVOutputType.java

    publicclass ObjVOutputType {

        @XmlElement(name = "REF")

        protected Integer ref;

        @XmlElement(name = "Station_ID")

        protected Integer stationID;

        @XmlElement(name = "PHYSICAL_OUTPUT_CHANNEL")

        protected Integer physicaloutputchannel;

       

           ……

        public Integer getREF() {

            returnref;

        }

        publicvoid setREF(Integer value) {

            this.ref = value;

        }

        public Integer getStationID() {

            returnstationID;

        }

            ……

        publicvoid setRecordLockFlags(Integer value) {

            this.recordLockFlags = value;

        }

       

        public Integer getValidRecord() {

            returnvalidRecord;

        }

        publicvoid setValidRecord(Integer value) {

            this.validRecord = value;

        }

    }

    DeviceType.java

    @XmlType(name = "DeviceType")

    @XmlEnum

    publicenum DeviceType {

        @XmlEnumValue("Monitor")

        MONITOR("Monitor"),

        VCR("VCR"),

        @XmlEnumValue("Standard Device")

        STANDARD_DEVICE("Standard Device"),

        @XmlEnumValue("Smart Device")

        SMART_DEVICE("Smart Device"),

        @XmlEnumValue("Trunk")

        TRUNK("Trunk"),

        @XmlEnumValue("Standby VCR")

        STANDBY_VCR("Standby VCR");

        privatefinal String value;

        DeviceType(String v) {

            value = v;

        }

        public String value() {

            returnvalue;

        }

        publicstatic DeviceType fromValue(String v) {

            for (DeviceType c: DeviceType.values()) {

                if (c.value.equals(v)) {

                    return c;

                }

            }

            thrownew IllegalArgumentException(v);

        }

    }

    d)應(yīng)用示例:

                       protected JAXBContext jaxbcontext;

    Object voutputElement = null;

    //jaxbpackage:package名稱

    jaxbcontext = JAXBContext.newInstance(jaxbpackage);

           Unmarshaller um = jaxbcontext.createUnmarshaller();

    // xmlfileName:xml文件路徑

        voutputElement = um.unmarshal(new fileInputStream(xmlfileName));

           VOutput vOutput = (VOutput) voutputElement;

    posted on 2008-02-25 17:09 zhan 閱讀(1107) 評論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    <2008年2月>
    272829303112
    3456789
    10111213141516
    17181920212223
    2425262728291
    2345678

    常用鏈接

    留言簿(1)

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国内精品99亚洲免费高清| 四虎在线播放免费永久视频| 久久久久久国产a免费观看黄色大片| 校园亚洲春色另类小说合集| 亚洲国产精品线观看不卡| 亚洲人色婷婷成人网站在线观看 | 亚洲欧洲日产国产综合网| 久久精品亚洲乱码伦伦中文| 在线观看人成网站深夜免费| 免费h片在线观看网址最新| 国产免费爽爽视频在线观看| 72pao国产成视频永久免费| 国产成人亚洲午夜电影| 亚洲日韩看片无码电影| 亚洲AV无码一区二区三区在线| 亚洲国产精品不卡在线电影| 亚洲中文字幕无码一区| 亚洲精品尤物yw在线影院| 国产18禁黄网站免费观看| 国外成人免费高清激情视频| 毛片大全免费观看| 大地资源在线观看免费高清| 美女被cao免费看在线看网站| 我们的2018在线观看免费高清| 亚洲香蕉免费有线视频| **俄罗斯毛片免费| 真实国产乱子伦精品免费| 久99久精品免费视频热77| 久久国产精品国产自线拍免费 | 亚洲欧洲国产精品香蕉网| 亚洲线精品一区二区三区影音先锋 | 国产亚洲精品美女2020久久| 亚洲无人区码一二三码区别图片| 久久亚洲春色中文字幕久久久| 久久亚洲国产午夜精品理论片| 久久久久久a亚洲欧洲aⅴ| 国产成人亚洲精品青草天美| 亚洲va中文字幕无码久久不卡| 亚洲AV日韩精品久久久久久久 | 日本免费A级毛一片| 久久久久久影院久久久久免费精品国产小说 |