<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 6  文章 - 129  trackbacks - 0
    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿(14)

    隨筆檔案(6)

    文章分類(467)

    文章檔案(423)

    相冊

    收藏夾(18)

    JAVA

    搜索

    •  

    積分與排名

    • 積分 - 828863
    • 排名 - 49

    最新評論

    閱讀排行榜

    評論排行榜


    1. SAX ( Simple Application interface for XML ), 是一組程序設計接口,采用 observer 模式,將XML文件視為一個文字流的數據,在讀取XML 元素時觸發一系列的事件

    2. 使用DOM 時是將xml 文件解析為一個樹狀結構,并對樹中的節點進行操作
    使用SAX 加載XML文件時,他的操作像打開一個“順序的文件字符流”,在讀到XML元素的開始標記,結尾標記和內容標記時將產生一系列的事件
    如一個簡單的XML文件:<hello><message>hello XML!</message></hello>
    會相應的觸發:startDocument, startElement, characters, endElement, endDocument, 只需編寫這些事件處理程序就可以解析XML文件了

    3. SAX 可以高效的使用內存,因為SAX 只是順序的讀取XML 文件的內容,并不會將XML 文件完全加載,這樣就比DOM 的處理效率高
    但SAX 只能讀取XML 文件的內容,而不能更改XML 的內容,也不能隨機訪問XML 元素

    4. 在SAX 中有4個處理器是要實現的:ContentHandler,DTDHandler,EntityResolver,ErrorHandler,以處理不同的事件,這是比較麻煩的,
    幸好SAX 定義了一個 DefaultHandler 類把這幾個實現了,我們只需在 DefaultHandler中定義事件處理方法,然后注冊到XMLReader,而SAXParser封裝了XMLReader的實現類,
    SAXParser又是由SAXParserFactory提供的,所以我們實際用到的類只有:SAXParserFactory,SAXParser,DefaultHandler

    5. SAX 的解析步驟:
    (1)寫一個類繼承 DefaultHandler, 實現自己的事件處理方法
    (2)在主程序中建立 SAXParserFactory
    (3)可以設置這個factory 的參數
    (4)從這個factory 得到SAXParser
    (5)解析XML文件

    例子:

    XML 文件:hr.xml
    <?xml version="1.0" encoding="GB2312" ?>
    <!-- 個人履歷表-->
    <resume>
    <person id="01">
    <name>張三</name>
    <birthday>03/24/1975</birthday>
    <phone>1111-1111</phone>
    <address>大連</address>
    </person>
    <person id="02">
    <name>李四</name>
    <birthday>9/26/1978</birthday>
    <phone>2222-2222</phone>
    <address>南京</address>
    </person>
    <person id="03">
    <name>王五</name>
    <birthday>11/09/1979</birthday>
    <phone>3333-3333</phone>
    <address>武漢</address>
    </person>
    </resume>


    import javax.xml.parsers.*;
    import org.xml.sax.*;
    import org.xml.sax.helpers.*;

    public class MySaxParser extends DefaultHandler {
    public static void main( String[] args ){
    try{
    // 創建一個handler
    DefaultHandler dh = new MySaxParser();
    // 創建SAXParserFactory
    SAXParserFactory spf = SAXParserFactory.newInstance();
    // 從factory 中得到SAXParser
    SAXParser sp = spf.newSAXParser();
    // 用自定義的handler 解析xml
    sp.parse( "08_02.xml", dh );
    }catch( Exception e ){
    e.printStackTrace();
    }
    }
    public void startDocument(){

    }
    /**
    * 當開始一個元素時打印出元素名和此元素的所有屬性
    */
    public void startElement(String uri,
    String localName,
    String qName,
    Attributes attributes)
    {
    System.out.print( qName + ":" );
    int len = 0;
    len = attributes.getLength();
    if( len > 0 ){
    System.out.print( "\t" + "attributes: " );
    for( int i=0; i<len; i++ )
    System.out.print( attributes.getQName(i) + "=" + attributes.getValue(i) + "\t" );
    //System.out.println();
    }
    }
    /**
    * 打印出元素內容
    */
    public void characters(char[] ch,
    int start,
    int length)
    {
    String s = String.valueOf( ch, start, length );
    System.out.print( s );
    }
    public void endElement(String uri,
    String localName,
    String qName)
    {

    }
    public void endDocument(){

    }
    }


    posted on 2010-11-25 20:47 Ke 閱讀(267) 評論(0)  編輯  收藏 所屬分類: xml

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


    網站導航:
     
    主站蜘蛛池模板: 又粗又黄又猛又爽大片免费 | 国产精品亚洲专区在线播放| 亚洲综合国产成人丁香五月激情| 四虎亚洲精品高清在线观看| 亚洲av色香蕉一区二区三区| 在线观看亚洲电影| 理论秋霞在线看免费| 免费在线黄色电影| 最近的免费中文字幕视频 | 亚洲国产人成精品| 久久久久亚洲精品中文字幕| 久久亚洲日韩精品一区二区三区| 亚洲大香人伊一本线| 免费看黄网站在线看 | 最近中文字幕mv免费高清视频8| 老司机在线免费视频| 又大又硬又爽又粗又快的视频免费| 国产精品深夜福利免费观看| 亚洲免费日韩无码系列| 亚洲大尺码专区影院| a在线视频免费观看在线视频三区| 免费无码中文字幕A级毛片| 国产精品久免费的黄网站| 亚洲AV永久无码精品| 国产青草亚洲香蕉精品久久| 免费国产午夜高清在线视频| 在线永久免费观看黄网站| 亚洲国产香蕉碰碰人人| 精品无码专区亚洲| 无码av免费毛片一区二区| 亚洲人成77777在线播放网站| 久久久久se色偷偷亚洲精品av| 成人片黄网站色大片免费观看cn | 日本人护士免费xxxx视频| 亚洲AV一宅男色影视| 另类图片亚洲校园小说区| 每天更新的免费av片在线观看 | 精品少妇人妻AV免费久久洗澡| 久久久久久久尹人综合网亚洲| 亚洲AV无码专区在线观看成人| 亚洲一级毛片免费看|