亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Java解析XML的一種數(shù)據(jù)綁定技術(shù)

        2012-01-15 06:02:48劉平
        電子設(shè)計工程 2012年15期
        關(guān)鍵詞:跨平臺代碼可視化

        劉平

        (西安財經(jīng)學(xué)院 信息與教育技術(shù)中心,陜西 西安 710061)

        在跨平臺的Web技術(shù)應(yīng)用中,XML[1]技術(shù)占據(jù)著非常重要的地位,如不同系統(tǒng)之間的數(shù)據(jù)交互,同一系統(tǒng)各模塊之間實現(xiàn)松耦合[2],如果沒有XML技術(shù)的支持,要做好軟件技術(shù)開發(fā)是很難想象的。對于應(yīng)用層軟件開發(fā)人員來講,遇到的主要技術(shù)困難就是跨平臺,因為他們所用的開發(fā)平臺大都各自成為完整的體系,而且系統(tǒng)大都集成了各種插件。下面通過處理 “學(xué)生基本信息”這一實例系統(tǒng)地論述跨平臺地XML與Java綁定技術(shù)和方法。

        1 創(chuàng)建圖形化的XSM文件

        根據(jù)對學(xué)生基本信息的分析,可以建立描述學(xué)生基本信息的可視化XSM文件,如圖1所示。

        2 創(chuàng)建XSD文件

        接下來將XSM圖形文件轉(zhuǎn)換成XSD[3](XML Schema)模板文件,名為:XMLStudents.XSD,轉(zhuǎn)換后的內(nèi)容如下:

        3 將XSD文件的各元素與Java類綁定

        下一步根據(jù)XMLStudents.XSD文件的內(nèi)容,創(chuàng)建相應(yīng)的Java類[4]:XmlStudents.Java、XMLStudent.java 和 XmlStudentType.java文件,實現(xiàn)解析功能主要代碼分別如下:

        1)XmlStudents.Java

        該文件中主要創(chuàng)建對整個XML文件的元素節(jié)點操作的類,以及操作每個元素節(jié)點的增刪方法和讀存節(jié)點數(shù)據(jù)值的方法,需要引進(jìn)的類如下:

        java.io.*,import java.util*,org.exolab.castor.xml.*,import org.xml.sax.ContentHandler;

        /********創(chuàng)建XmlStudents類主要代碼***********/

        public class XmlStudents implements java.io.Serializable{

        private java.util.Vector_XMLStudentList;

        public XmlStudents() {super(); _XMLStudentList=new Vector();}//構(gòu)造方法

        //--添加節(jié)點方法

        public void addXMLStudent(xsd.XMLStudent vXMLStudent)

        throws java.lang.IndexOutOfBoundsException

        {

        _XMLStudentList.addElement(vXMLStudent);

        }

        public void addXMLStudent (int index, xsd.XMLStudent vXMLStudent)

        throws java.lang.IndexOutOfBoundsException

        {

        _XMLStudentList.insertElementAt(vXMLStudent, index);

        }

        public java.util.Enumeration enumerateXMLStudent()

        {

        return_XMLStudentList.elements();

        }

        //--獲取節(jié)點方法

        public xsd.XMLStudent getXMLStudent(int index)

        throws java.lang.IndexOutOfBoundsException

        {

        //--測試綁定索引

        if((index<0) ||(index>_XMLStudentList.size())) {

        throw new IndexOutOfBoundsException();

        }

        return (xsd.XMLStudent) _XMLStudentList.elementAt(index);

        }

        下面是該類實現(xiàn)的一組節(jié)點存取數(shù)據(jù)、刪除數(shù)據(jù)和驗證點數(shù)據(jù)的方法,將整個XML文件轉(zhuǎn)化成要解析的對象,從中讀取各節(jié)點[5]的數(shù)據(jù),對XML文件進(jìn)行讀寫操作(省略方法內(nèi)容):getXMLStudent (),getXML-StudentCount (),isValid(,marshal (java.io.Writer,setXMLStudent (int, xsd.XMLStudent),setXMLStudent (xsd.XMLStudent,unmar-shal (Reader reader),unmarshalReader),validate(),marshal(org.xml.sax.ContentHandler handler),marshal(org.xml.sax.ContentHandler),removeAllXML Student(),removeXMLStudent(int).

        }

        2)XMLStudent.Java

        該文件主要創(chuàng)建針對每一個XMLStudent節(jié)點進(jìn)行具體操作的類。需要引進(jìn)的類如下:

        java.io.*,import java.util*,org.exolab.castor.xml.*,import org.xml.sax.ContentHandler;

        /*******創(chuàng)建XmlStudent類主要代碼*************/

        public class XMLStudent extends XmlStudentType implements java.io.Serializable

        {

        public XMLStudent() {

        super();

        //--驗證合法性

        public boolean isValid()

        {

        try{

        validate();

        }

        catch (ValidationException vex) {

        return false;

        }

        return true;

        }

        /*********將節(jié)點對象寫入XML文件中********/

        public void marshal(java.io.Writer[6]out)

        Throws MarshalException,ValidationException

        {

        Marshaller.marshal(this, out);

        } public void marshal(org.xml.sax.ContentHandler handler)

        Throws IOException,MarshalException,Validation Exception

        {

        Marshaller.marshal(this, handler);

        }

        /*******從XML文件中讀取節(jié)點對象************/

        public static java.lang.Object unmarshal(java.io.Reader reader)

        throwsMarshalException,ValidationException

        {

        return (xsd.XMLStudent) Unmarshaller.unmarshal(xsd.XML Student.class, reader);

        }

        //--void validate()

        public void validate()

        throws org.exolab.castor.xml.ValidationException

        {

        org.exolab.castor.xml.Validatorvalidator= new Validator();

        validator.validate(this);

        }}

        3)XmlStudentType.java

        該文件主要創(chuàng)建對每個XmlStudent節(jié)點的子節(jié)點的數(shù)據(jù)解析類,需要引進(jìn)的類如下:

        java.io.*,import java.util*,org.exolab.castor.xml.*,import org.xml.sax.ContentHandler;

        /**********創(chuàng)建XmlStudentType類主要代碼*******************/

        public class XmlStudentType implements java.io.Serializable{

        private int_ID;

        private boolean_has_ID;

        private java.lang.String_identify;

        private java.lang.String_name;

        private java.lang.String_sex;

        private java.lang.String_birthday;

        private java.lang.String_address;

        private java.lang.String_telephone;

        private java.lang.String_mem;

        //--構(gòu)造方法

        public XmlStudentType() {

        super();

        }

        public void deleteID()

        {

        this._has_ID=false;

        }//--void deleteID()

        /**************相應(yīng)每一個屬性的一對setXxx/getXxx方法,這里略寫*******/

        ...............................................

        //--驗證合法性

        public boolean isValid()

        {

        try{

        validate();

        }

        catch (ValidationException vex) {

        return false;

        }

        return true;

        }

        //寫數(shù)據(jù)

        public void marshal(java.io.Writer out)

        Throws MarshalException,ValidationException

        {

        Marshaller.marshal(this, out);

        }

        public void marshal(ContentHandler handler)

        throws IOException,MarshalException,Validation Exception

        {

        Marshaller.marshal(this, handler);

        }

        //--讀數(shù)據(jù)

        public static java.lang.Object unmarshal(java.io.Reader reader)

        Throws MarshalException,ValidationException

        {

        return (xsd.XmlStudentType) Unmarshaller.unmarshal(xsd.XmlStudentType.class, reader);

        }

        public void validate()

        throws ValidationException

        {

        org.exolab.castor.xml.Validator validator=new Validator();

        validator.validate(this);

        }//--void validate()

        }

        4 創(chuàng)建可視化界面測試程序

        創(chuàng)建可視化界面類,如圖2所示,將有關(guān)學(xué)生信息輸入該界面,然后提交給上面有關(guān)的類,即可實現(xiàn)測試。

        5 結(jié)束語

        根據(jù)以上代碼的實踐,筆者將XML與Java程序代碼完整地綁定在一起,為跨平臺地數(shù)據(jù)交互提供了很大地方便,并為開發(fā)人員提供了XML文件解析的另一中有效途徑。

        [1]郝俊壽.XML程序設(shè)計案例教程[M].北京:機(jī)械工業(yè)出版社,2012.

        [2]徐宏喆.實用軟件設(shè)計模式教程[M].北京:清華大學(xué)出版社,2010.

        [3]楊少波.J2EE Web核心技術(shù)-XHTML與XML應(yīng)用開發(fā)[M].北京:清華大學(xué)出版社,2011.

        [4]陳燁.JBuilder7編程實作指南[M].北京:北京希望電子出版社,2003.

        [5]Brett D.Mclaugblin.Java與XML[M].江文,譯.北京:中國電力出版社,2011.

        [6]吳亞峰.Java se 6.0.[M].北京:人民郵電出版社,2007.

        猜你喜歡
        跨平臺代碼可視化
        基于CiteSpace的足三里穴研究可視化分析
        基于Power BI的油田注水運(yùn)行動態(tài)分析與可視化展示
        云南化工(2021年8期)2021-12-21 06:37:54
        基于CGAL和OpenGL的海底地形三維可視化
        “融評”:黨媒評論的可視化創(chuàng)新
        傳媒評論(2019年4期)2019-07-13 05:49:14
        跨平臺APEX接口組件的設(shè)計與實現(xiàn)
        創(chuàng)世代碼
        動漫星空(2018年11期)2018-10-26 02:24:02
        創(chuàng)世代碼
        動漫星空(2018年2期)2018-10-26 02:11:00
        創(chuàng)世代碼
        動漫星空(2018年9期)2018-10-26 01:16:48
        創(chuàng)世代碼
        動漫星空(2018年5期)2018-10-26 01:15:02
        基于QT的跨平臺輸電鐵塔監(jiān)控終端軟件設(shè)計與實現(xiàn)
        亚洲av永久无码精品一区二区| 黄色潮片三级三级三级免费| 久久亚洲av成人无码软件| 美女草逼视频免费播放| 免费一区二区高清不卡av| 国产精品久久久久aaaa| 国产在线白丝DVD精品| 免费在线观看蜜桃视频| 国产亚洲成人精品久久久| 成人亚洲精品777777| 久久久无码一区二区三区| 鲁丝一区鲁丝二区鲁丝三区| 在线观看免费不卡网站| 色婷婷av一区二区三区久久| 色拍自拍亚洲综合图区| 夜夜春精品视频| 中文字幕精品乱码一区| 国99精品无码一区二区三区| 夜夜未满十八勿进的爽爽影院| 国产亚洲高清不卡在线观看| 国产亚洲一区二区毛片| 亚洲av无码专区在线| 欧美粗大无套gay| 国产欧美日本亚洲精品一5区| 精彩亚洲一区二区三区| 国产69精品久久久久久久| 国产亚洲精品自在久久蜜tv | 欧美情侣性视频| 喷潮出白浆视频在线观看| 二区三区三区视频在线观看| 双腿张开被9个男人调教| 久99久精品视频免费观看v| 亚洲中文乱码在线视频| 韩国三级大全久久网站| 色偷偷88888欧美精品久久久| 国产成人色污在线观看| 久久久久免费精品国产| 亚洲av无码一区二区二三区| AV无码人妻一区二区三区牛牛| 扒开美女内裤舔出白水| 国产成人精品电影在线观看|