DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML基礎 >> XML和JSP交互技術(2)
XML和JSP交互技術(2)
編輯:XML基礎     

 

在這裡我們編寫一個myHandler的類,它用來實施HandlerBase接口,並且覆蓋接口的三個主要方法startElement(String tag, AttributeList attrs)、characters(char[] ch, int start, int length)、endElement(String name)以便能對XML文件進行操作。

  為了保存數據以便外部程序能夠調用本類中的數據,我們采用了哈希表結構來保存解析XML文件後的所有節點名字以及節點的數據值,startElement()方法主要用來讀取XML文件中的節點名稱,characters()方法主要用來根據節點名稱讀取節點數據,endElement()方法主要是在一個XML節點處理完畢後將這對節點名稱和節點數據保存在哈希表中。

  在外部程序中我們只需要調用getTable()方法返回一個哈希表對象就可以讀取所有的節點和節點數據值了。

  代碼不多,而且我在下面添加了很多注釋,應該很好看懂了。

  myHandler.java文件

  file://文件放置在包com.jsp21.www中

  package com.jsp21.www;

  file://導入相關的java API

  import java.io.*;

  import org.w3c.dom.*;

  import org.xml.sax.*;

  import javax.xml.parsers.SAXParser;

  import javax.xml.parsers.SAXParserFactory;

  import java.util.Hashtable;

  import java.util.Enumeration;

  // myHandler類實現HandlerBase接口;

  public class myHandler extends HandlerBase {

  private String myElement = null; file://XML文件中的標記名稱;

  private String myValue = null; file://XML文件中標記對應的值;

  private Hashtable mytable = new Hashtable(); file://用來保存XML文件中所有的數據;

  file://得到保存有XML數據的哈希表Hashtable;

  public Hashtable getTable() {

   return mytable;

  }

  file://覆蓋HandlerBase接口中的startElement方法,讀取一行XML數據的開始標記時候執行此方法;

  // tag代表XML中的標記,如前面XML文件中的NAME AGE等;

  public void startElement(String tag, AttributeList attrs)

   throws SAXException {

   myElement = tag;

  }

  file://覆蓋HandlerBase接口中的characters方法,主要用來得到和之間具體的數據;

  // 當對應myElement的標記發現值後,也就是startElement方法執行完畢後,就會觸發這個characters方法來得到具體的數值;

  file://如myElement="姓名"時候,myValue就會等於"劉玉鋒";

  public void characters(char[] ch, int start, int length)

  throws SAXException {

    myValue = new String(ch, start, length);

  }

  file://覆蓋HandlerBase接口中的endElement方法,主要用來在一行XML數據讀取完畢後進行自己的處理;

  // 當XML文件中一行標記讀取完畢後,觸發此endElement方法;

  file://如果存在對應的結束標記,就將前面得到的標記myElement和值myValue

  file://放入到mytable哈希表中;

  public void endElement(String name) throws SAXException {

  if ( myElement.equals(name) ) {

   mytable.put(myElement, myValue);

  }

  }

  }

好了,編譯這個class,並把myHandler.class文件放置在CLASSPATH能找到的路徑中,比如Tomcat中應用程序的Web-inf\classes\com\jsp21\www目錄下。

XML和JSP交互技術(4)

  5)Jsp程序調用XML

  在這裡,我們寫了一個比較簡單的Jsp程序來調用前面的myHandler類,並通過這個類來讀取personal.xml文件中的內容,最後顯示在Jsp頁面中。

  首先我們創建一個SAXParserFactory的實例saxpF,然後通過這個實例來創建一個SAXParser的實例saxpser(可以用來解析XML文件內容),當然還要創建myHandler類的實例,最後通過saxpser.parse()方法將XML文件和myHandler類實例關聯起來(這樣會執行myHandler中的幾個事件處理方法)。

  (說明:SAXParserFactory是一個抽象類,定義了一個factory API可以讓Java應用程序配置或者是獲得一個SAX的解析器(SAX parser)。SAXParser也是一個抽象類,通過這個類應用程序可以解析XML文件的內容。)

  到這時候XML所有內容都保存在了myHan

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved