• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      劉平

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

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

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

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

      2 創(chuàng)建XSD文件

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

      3 將XSD文件的各元素與Java類(lèi)綁定

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

      1)XmlStudents.Java

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

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

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

      public class XmlStudents implements java.io.Serializable{

      private java.util.Vector_XMLStudentList;

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

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

      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é)點(diǎn)方法

      public xsd.XMLStudent getXMLStudent(int index)

      throws java.lang.IndexOutOfBoundsException

      {

      //--測(cè)試綁定索引

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

      throw new IndexOutOfBoundsException();

      }

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

      }

      下面是該類(lèi)實(shí)現(xiàn)的一組節(jié)點(diǎn)存取數(shù)據(jù)、刪除數(shù)據(jù)和驗(yàn)證點(diǎn)數(shù)據(jù)的方法,將整個(gè)XML文件轉(zhuǎn)化成要解析的對(duì)象,從中讀取各節(jié)點(diǎn)[5]的數(shù)據(jù),對(duì)XML文件進(jìn)行讀寫(xiě)操作(省略方法內(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

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

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

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

      public class XMLStudent extends XmlStudentType implements java.io.Serializable

      {

      public XMLStudent() {

      super();

      //--驗(yàn)證合法性

      public boolean isValid()

      {

      try{

      validate();

      }

      catch (ValidationException vex) {

      return false;

      }

      return true;

      }

      /*********將節(jié)點(diǎn)對(duì)象寫(xiě)入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é)點(diǎn)對(duì)象************/

      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

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

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

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

      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)每一個(gè)屬性的一對(duì)setXxx/getXxx方法,這里略寫(xiě)*******/

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

      //--驗(yàn)證合法性

      public boolean isValid()

      {

      try{

      validate();

      }

      catch (ValidationException vex) {

      return false;

      }

      return true;

      }

      //寫(xiě)數(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)建可視化界面測(cè)試程序

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

      5 結(jié)束語(yǔ)

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

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

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

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

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

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

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

      猜你喜歡
      跨平臺(tái)代碼可視化
      基于CiteSpace的足三里穴研究可視化分析
      基于Power BI的油田注水運(yùn)行動(dòng)態(tài)分析與可視化展示
      云南化工(2021年8期)2021-12-21 06:37:54
      基于CGAL和OpenGL的海底地形三維可視化
      “融評(píng)”:黨媒評(píng)論的可視化創(chuàng)新
      跨平臺(tái)APEX接口組件的設(shè)計(jì)與實(shí)現(xiàn)
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      基于QT的跨平臺(tái)輸電鐵塔監(jiān)控終端軟件設(shè)計(jì)與實(shí)現(xiàn)
      山丹县| 巴中市| 壶关县| 太和县| 江西省| 山阳县| 丁青县| 特克斯县| 平昌县| 出国| 吉木萨尔县| 文成县| 南城县| 山东省| 寿光市| 苍山县| 温州市| 衢州市| 明溪县| 灌云县| 宁乡县| 长泰县| 辽阳市| 行唐县| 乌鲁木齐市| 安龙县| 汝南县| 榆树市| 镇沅| 鄂州市| 阿勒泰市| 平和县| 桓仁| 息烽县| 延庆县| 尚志市| 伊金霍洛旗| 龙陵县| 股票| 南郑县| 乌拉特前旗|