<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é)的知識進行一次系統(tǒng)的復(fù)習(xí)。而重新復(fù)習(xí)最好的辦法就是將最近剛完成,但不完善的Xml數(shù)據(jù)配置的Web程序,進行一次重構(gòu)。

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

    1.              Jaxb

    2.              Xml,Sechema

    3.              JSF(JavaServer Faces)

    4.              Html ,CSS ,Javascript

    5.              Java: a) 類的繼承

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

    1、知識回顧

    1.1 JAXB  

    1.簡介:(Java Architecture for XML Binding) 是一個業(yè)界的標準,是一項可以根據(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文件,然后再對其進行簡單的修改。

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

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

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

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

    通過代碼生成的xsd文件需要進一步修改。

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

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

    這里通過小工具“xjc”實現(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>            指定目標包

    "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 閱讀(1106) 評論(0)  編輯  收藏

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


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

    常用鏈接

    留言簿(1)

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品永久www忘忧草| 一道本不卡免费视频| 免费一级特黄特色大片在线| 国产精品免费一区二区三区| 久久精品九九亚洲精品| 免费一级毛片在线观看| 2020因为爱你带字幕免费观看全集| WWW国产亚洲精品久久麻豆| 亚洲va中文字幕无码久久不卡| 在线看片免费不卡人成视频| 国产黄色片免费看| 亚洲综合无码无在线观看| 亚洲午夜无码久久久久| 天天摸天天碰成人免费视频| 久久爰www免费人成| 黄页网址大全免费观看12网站| 亚洲免费精彩视频在线观看| 亚洲Av无码乱码在线znlu| 91精品成人免费国产片| g0g0人体全免费高清大胆视频| 国产精品亚洲四区在线观看 | 亚洲人成网77777亚洲色 | 久久久亚洲欧洲日产国码二区| 免费乱理伦在线播放| 99久久久国产精品免费无卡顿| 成人无码精品1区2区3区免费看| 亚洲日韩亚洲另类激情文学| 中文字幕不卡高清免费| 亚洲午夜精品一级在线播放放| 成人无码精品1区2区3区免费看| 亚洲av午夜福利精品一区| 国产免费观看青青草原网站| **毛片免费观看久久精品| 成人无码WWW免费视频| 瑟瑟网站免费网站入口| 亚洲色大成WWW亚洲女子| 亚洲毛片基地日韩毛片基地| 久久精品国产亚洲AV麻豆王友容| 亚洲熟妇少妇任你躁在线观看无码| 永久黄网站色视频免费直播| 国产免费不卡v片在线观看|