<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

    搜索

    •  

    積分與排名

    • 積分 - 828831
    • 排名 - 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

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


    網站導航:
     
    主站蜘蛛池模板: 国产成人A在线观看视频免费| 日本精品久久久久久久久免费 | 中文字幕成人免费高清在线| 日韩黄色免费观看| 亚洲综合色一区二区三区| 免费观看的毛片大全| 亚洲冬月枫中文字幕在线看| 1000部啪啪未满十八勿入免费| 91亚洲一区二区在线观看不卡| 鲁大师在线影院免费观看| 亚洲AV永久无码精品一百度影院| 国产VA免费精品高清在线| 亚洲一区二区三区影院 | 亚洲字幕在线观看| 亚洲啪啪免费视频| 亚洲a视频在线观看| 成人无码区免费视频观看| 亚洲欧洲AV无码专区| 国产一级淫片a免费播放口之| 亚洲av日韩av永久无码电影| 四虎影院永久免费观看| xxxx日本在线播放免费不卡| 亚洲免费人成在线视频观看| 久久成人免费播放网站| 丁香婷婷亚洲六月综合色| 啦啦啦www免费视频| 风间由美在线亚洲一区| 中文字幕亚洲天堂| 91青青国产在线观看免费| 亚洲a∨无码男人的天堂| 国产午夜免费秋霞影院| 成av免费大片黄在线观看| 亚洲人成在线播放网站岛国| 国产一精品一AV一免费孕妇| 色视频在线观看免费| 亚洲av无码精品网站| 无码人妻一区二区三区免费| 美女裸免费观看网站| 亚洲av综合色区| 免费无码黄动漫在线观看| 国产在线观看免费视频软件|