黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 詳解SAX解析XML

詳解SAX解析XML

更新時間:2020-11-30 17:49:26 來源:動力節點 瀏覽1287次

SAX,全稱 Simple API for XML,是一種以事件驅動的 XMl API,即XML 簡單應用程序接口。解析 XML 元素名稱和內容的關鍵是當 SAX 解析 XML 時,把元素的名稱和內容及時保存起來,同時 XML 中可能會有很多同名的元素,要把元素名稱和內容對應起來。


與 DOM 不同,SAX 提供的訪問模式是一種順序模式,這是一種快速讀寫 XML 數據的方式。當使用 SAX 分析器對 XML 文檔進行分析時,會觸發一系列事件,并激活相應的事件處理函數,應用程序通過這些事件處理函數實現對XML文檔的訪問,因而SAX接口也被稱作事件驅動接口。

 

SAX 解析 XML 的一般步驟:

 

1.創建 SAXParserFactory 的對象

 

2.創建 SAXParser 對象 (解析器)

 

3.創建一個 DefaultHandler 的子類,需要重寫5個方法

 

1)解析xml文檔開始時調用

 

startDocument()

 

2)解析xml文檔結束時調用

 

endDocument()

 

3)解析xml文檔中的開始節點時調用

 

startElement(String uri, String localName, String qName, Attributes attributes)

 

4)解析xml文檔中的結束節點時調用

 

endElement(String uri, String localName, String qName)

 

5)解析xml文檔中的節點中的文本值時調用

 

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

 

4) 調用 parse 方法

 

了解了SAX 解析 XML 的步驟,我們開始進行實戰解析:

DefaultHandler 子類:

 

import org.xml.sax.Attributes;

import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;

 

public class BookDefaultHandler extends DefaultHandler{

/** 解析xml文檔開始時調用 */

@Override

public void startDocument() throws SAXException {

super.startDocument();

System.out.println("------解析XML文檔開始------");

}

/** 解析xml文檔中的開始節點時調用 */

@Override

public void startElement(String uri, String localName, String qName,

                              Attributes attributes) throws SAXException {

super.startElement(uri, localName, qName, attributes);

//  System.out.println("解析XML文檔的開始節點");

System.out.print("<" + qName + " ");

/* 判斷:如果是book節點,獲取節點的屬性值 */

if(qName.equals("book")) {

//獲取所有的屬性

int count = attributes.getLength();

for (int i = 0; i < count; i++) {

String attrName = attributes.getQName(i);

String attrValue = attributes.getValue(i);

System.out.print(attrName + "=\"" + attrValue

                                                             + "\" ");

}

}

System.out.println(">");

}

/** 解析xml文檔中的結束節點時調用 */

@Override

public void endElement(String uri, String localName, String qName)

                                         throws SAXException {

super.endElement(uri, localName, qName);

System.out.println("</" + qName + ">");

}

/** 解析xml文檔中的節點中的文本值時調用 */

@Override

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

                                         throws SAXException {

super.characters(ch, start, length);

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

//去掉空白節點

if(!value.trim().equals("")) {

System.out.println(value);

}

}

/** 解析xml文檔結束時調用 */

@Override

public void endDocument() throws SAXException {

super.endDocument();

System.out.println("------解析XML文檔結束------");

}

}


SAX解析測試類:

 

import java.io.IOException;

import javax.xml.parsers.ParserConfigurationException;

import javax.xml.parsers.SAXParser;

import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.SAXException;

 

public class TestSAXParse {


public static void main(String[] args)

         throws ParserConfigurationException, SAXException, IOException {

//1) 創建 SAXParserFactory 的對象

SAXParserFactory factory = SAXParserFactory.newInstance();

//2) 創建 SAXParser 對象 (解析器)

SAXParser parser = factory.newSAXParser();

//3) 創建一個 DefaultHandler 的子類,需要重寫5個方法

BookDefaultHandler bdh = new BookDefaultHandler();

//4) 調用 parse 方法

parser.parse("book.xml", bdh);

}

}

 

盡管SAX解析XML不是XML的解析方式的唯一,但SAX解析XML仍在XML解析方式中占據一席之地,除了SAX解析XML采用事件驅動模式,對內存耗費比較小之外,SAX解析XML在只處理XML文件中的數據時無疑是最佳選擇。當然SAX解析XML也不是沒有缺點的,事實上SAX解析XML很難同時訪問XML文件中的多處不同數據而被詬病。想要了解更多的XML知識,快來觀看本站的XML教程吧,助你快速熟練掌握XML知識。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产亚洲精品拍拍拍拍拍 | 日本福利片在线观看 | 最近中文字幕更新免费 | 在线亚洲精品国产成人二区 | 欧美黄色一级视频 | 欧美成人三级网站在线观看 | japanese厨房乱tub偷 | 成人免费在线播放 | 国内精品久久久久不卡 | 亚洲成年网站在线观看 | 黄色免费一级播放片 | 91精品国产91久久久久久青草 | 天天弄天天操 | 欧洲乱码专区一区二区三区四区 | 欧美射图| 亚洲欧美日韩中文字幕在线一区 | 国产卡1卡2卡三卡在线 | 欧美三级在线观看不卡视频 | 久久成人性色生活片 | 五月天婷婷免费观看视频在线 | 五月天婷婷综合网 | 国产精品特黄毛片 | 美女啪啪网站又黄又免费 | 久久精品视频大全 | 日韩精品观看 | 欧美在线视频第一页 | 欧美一级在线视频 | 亚洲精彩视频在线观看 | 久久99国产精品久久 | 在线亚洲欧洲国产综合444 | 午夜情趣视频 | 污网站在线观看免费 | 一区二区三区免费在线视频 | 成人a毛片在线看免费全部播放 | 日本视频www色变态 日本爽p大片免费观看 | 成人在线免费看片 | 黄色一级片在线看 | 久久婷婷是五月综合色狠狠 | 欧美色图888 | 波多野结衣中文字幕在线视频 | 免费a级人成a大片在线观看 |