<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月份還是學習Java到現在已經將近3個月了,現在已經很有必要對以前所學的知識進行一次系統的復習。而重新復習最好的辦法就是將最近剛完成,但不完善的Xml數據配置的Web程序,進行一次重構。

    其中需要重新復習的知識主要內容如下:

    1.              Jaxb

    2.              XmlSechema

    3.              JSF(JavaServer Faces)

    4.              Html ,CSS ,Javascript

    5.              Java: a) 類的繼承

     b) 反射:實現內存列表的搜索。

    1、知識回顧

    1.1 JAXB  

    1.簡介:(Java Architecture for XML Binding) 是一個業界的標準,是一項可以根據XML Schema產生Java類的技術。結構圖如圖1-1


    結構圖如圖1-1

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

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

    3.例子:將一個xml文件轉換成一個Java類。

             a) xml文件結構

    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對應的類)

             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#的小程序生產一個xsd文件,然后再對其進行簡單的修改。

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

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

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

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

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

    有關XML Schema學習資源參考:http://www.w3schools.com/xpath/default.asp

     2)根據schema文件xsd生成java文件

    這里通過小工具“xjc”實現,下載地址: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文件生成后導入的文件夾

    -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)應用示例:

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

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


    網站導航:
     
    <2008年2月>
    272829303112
    3456789
    10111213141516
    17181920212223
    2425262728291
    2345678

    常用鏈接

    留言簿(1)

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 成人毛片免费视频| 亚洲高清日韩精品第一区| 中文永久免费观看网站| 亚洲国产精品日韩在线| 亚洲精品NV久久久久久久久久| 91热成人精品国产免费| 久久九九免费高清视频| 欧美日韩亚洲精品| 亚洲毛片免费观看| 久久亚洲国产中v天仙www| 欧洲美熟女乱又伦免费视频| 久草免费福利视频| fc2成年免费共享视频网站| 亚洲成av人片在线天堂无| 亚洲国产夜色在线观看| 久久精品国产亚洲AV麻豆~| 亚洲欧洲久久av| 亚洲乱码一区二区三区在线观看| 国产18禁黄网站免费观看| 国产成人免费高清激情视频| 亚洲免费在线视频| 永久在线观看免费视频| 美女被免费网站91色| 免费黄网站在线看| 国产精品免费精品自在线观看| 无码AV片在线观看免费| 99久久免费精品视频| 精品四虎免费观看国产高清午夜| 永久免费不卡在线观看黄网站| 久久精品国产免费观看三人同眠 | 亚洲精品福利视频| 亚洲一区二区三区无码中文字幕| 免费乱理伦在线播放| 日韩激情淫片免费看| 毛片免费在线观看网站| 免费a级毛片无码av| 亚洲AV无码成人精品区天堂 | 四虎影在线永久免费观看| 久久伊人亚洲AV无码网站| 亚洲精品线路一在线观看 | 女人张开腿给人桶免费视频|