<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年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(14)

    隨筆檔案(6)

    文章分類(467)

    文章檔案(423)

    相冊

    收藏夾(18)

    JAVA

    搜索

    •  

    積分與排名

    • 積分 - 825769
    • 排名 - 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 閱讀(261) 評論(0)  編輯  收藏 所屬分類: xml

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产成人九九综合| 久久综合日韩亚洲精品色| 亚洲人成激情在线播放| 一级毛片在线免费看| 亚洲s色大片在线观看| 成人黄网站片免费视频| 亚洲国产另类久久久精品黑人 | 亚洲成无码人在线观看| 久久免费的精品国产V∧| 亚洲国产精品SSS在线观看AV| 91免费福利视频| 亚洲国产精品一区二区第一页 | 4虎永免费最新永久免费地址| 亚洲精品动漫在线| 在线观看免费人成视频色| 亚洲永久中文字幕在线| 毛片a级三毛片免费播放| 亚洲欧美中文日韩视频| 夜色阁亚洲一区二区三区| 成人免费网站视频www| 久久精品国产亚洲沈樵| 2021精品国产品免费观看| 中文字幕在线日亚洲9| 国产伦精品一区二区三区免费下载 | 99在线精品免费视频九九视| 亚洲欧美日韩综合俺去了| 免费h成人黄漫画嘿咻破解版| 成年女人A毛片免费视频| 亚洲美女精品视频| 男女交性永久免费视频播放| 中文字幕在线视频免费观看| 久久亚洲精品成人无码网站 | 亚洲精品成人区在线观看| 久久精品免费一区二区三区| 亚洲午夜精品在线| 亚洲男人av香蕉爽爽爽爽| 日韩av无码久久精品免费| 亚洲av无一区二区三区| 亚洲国产成人一区二区精品区 | 国产亚洲美女精品久久久| 亚洲免费观看网站|