大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

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

詳解SAX解析XML

更新時間:2020-11-30 17:49:26 來源:動力節(jié)點 瀏覽1286次

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


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

 

SAX 解析 XML 的一般步驟:

 

1.創(chuàng)建 SAXParserFactory 的對象

 

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

 

3.創(chuàng)建一個 DefaultHandler 的子類,需要重寫5個方法

 

1)解析xml文檔開始時調(diào)用

 

startDocument()

 

2)解析xml文檔結束時調(diào)用

 

endDocument()

 

3)解析xml文檔中的開始節(jié)點時調(diào)用

 

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

 

4)解析xml文檔中的結束節(jié)點時調(diào)用

 

endElement(String uri, String localName, String qName)

 

5)解析xml文檔中的節(jié)點中的文本值時調(diào)用

 

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

 

4) 調(diào)用 parse 方法

 

了解了SAX 解析 XML 的步驟,我們開始進行實戰(zhàn)解析:

DefaultHandler 子類:

 

import org.xml.sax.Attributes;

import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;

 

public class BookDefaultHandler extends DefaultHandler{

/** 解析xml文檔開始時調(diào)用 */

@Override

public void startDocument() throws SAXException {

super.startDocument();

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

}

/** 解析xml文檔中的開始節(jié)點時調(diào)用 */

@Override

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

                              Attributes attributes) throws SAXException {

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

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

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

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

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文檔中的結束節(jié)點時調(diào)用 */

@Override

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

                                         throws SAXException {

super.endElement(uri, localName, qName);

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

}

/** 解析xml文檔中的節(jié)點中的文本值時調(diào)用 */

@Override

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

                                         throws SAXException {

super.characters(ch, start, length);

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

//去掉空白節(jié)點

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

System.out.println(value);

}

}

/** 解析xml文檔結束時調(diào)用 */

@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) 創(chuàng)建 SAXParserFactory 的對象

SAXParserFactory factory = SAXParserFactory.newInstance();

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

SAXParser parser = factory.newSAXParser();

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

BookDefaultHandler bdh = new BookDefaultHandler();

//4) 調(diào)用 parse 方法

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

}

}

 

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


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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 免费国产小视频在线观看 | 国产精品欧美一区二区在线看 | 欧美日韩性视频在线 | 青青青青爽视频在线播放 | 久爱www成人网免费视频 | 色视频国产 | 免费国产成人综合 | 特级毛片免费视频观看 | 欧美在线观看视频 | 国产系列 视频二区 | 天天操视频 夜夜 | 黄在线观看网站 | 按摩一级片| 人人乳乳香蕉大免费 | h录音 国产 在线 | 国产色视频一区 | 全免费a级毛片免费看不卡 全免费a级毛片免费看视频免 | 超清中文乱码精品字幕在线观看 | 欧毛片| 国产婷婷丁香久久综合 | 久久精品亚洲一级毛片 | 色综合久久加勒比高清88 | 日本一本一区二区 | 97夜夜澡人人爽人人免费 | 在线精品国产一区二区 | 在线精品中文字幕福利视频 | 久久激情综合网 | 久久99中文字幕久久 | 97理论片 | 日韩成人免费一级毛片 | 精品亚洲欧美高清不卡高清 | 四虎最新在线 | 久久夜夜操妹子 | 天堂精品视频 | 一级国产20岁美女毛片 | 天天射天天干天天 | 亚洲精品第一综合99久久 | 久操美女| 亚洲国产精品日韩在线 | 狠狠一区| 特级特黄一级乱仑 |