一個xml文檔除了我們人去讀寫之外,我們還希望通過程序去操作xml文檔,利用程序去增刪改查xml文檔的過程就稱作xml編程,對xml文檔解析主要有三種解析方式:SAX解析,dom解析以及pull解析。
雖然SAX解析不是官方標準,但它是xml社區(qū)事實上的標準,幾乎所有的xml解析器都支持他。我們首先來介紹SAX解析xml文檔。我們有一個xml文檔。<books> <book> <title>java從入門到放棄</title> <PRice>10元</price> <author>張三</author> </book> <book> <title>C語言從入門到放棄</title> <price>12元</price> <author>李四</author></book></books>一個SAX解析過程當中有兩個組件,一個是讀取器(解析器)還有一個是事件處理器。解析器部分我們就不用操心了,jdk中已經幫我們做好了。我們要做的就是編寫事件處理器的代碼。SAX解析的過程為:在解析xml文檔時,解析器會去逐行的掃描xml文檔,當掃描到解析器當中的任意一個內容時,都會觸發(fā)事件處理器當中的相應的方法。我們可以用下面這張圖片表示SAX解析的處理過程
了解了SAX解析的過程,我們下面用java語言實現(xiàn)這個過程:
例如:我們要打印出這個xml文檔中的所有的書的名字:
package com.hhuc.Sax;import java.io.IOException;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.XMLReader;import org.xml.sax.helpers.DefaultHandler;public class Demo { public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException { SAXParserFactory spf=SAXParserFactory.newInstance();//使用SAXParserFactory創(chuàng)建SAX解析工廠 SAXParser sp=spf.newSAXParser(); //通過SAX解析工廠得到解析器對象 XMLReader xmlreader=sp.getXMLReader(); //通過解析器對象的到一個xml的讀取器 xmlreader.setContentHandler(new DefaultHandler(){ private String elename=null; @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { elename=qName; } @Override public void endElement(String uri, String localName, String qName) throws SAXException { elename=null; } @Override public void characters(char[] ch, int start, int length) throws SAXException { if("title".equals(elename)) System.out.println(new String(ch,start,length)); } }); xmlreader.parse("book.xml"); //解析xml文檔 }}
|
新聞熱點
疑難解答