?? saxreader.java
字號(hào):
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import java.util.*;
import java.io.*;
import java.net.*;
public class SAXReader extends DefaultHandler
{
//定義一個(gè)堆棧,用來存儲(chǔ)數(shù)據(jù)
Stack tags = new Stack();
//當(dāng)遇到文檔開始標(biāo)記時(shí)會(huì)自動(dòng)觸發(fā)startDocument方法
public void startDocument() throws SAXException
{
System.out.println( "-------START-------" );
}
//當(dāng)遇到文檔結(jié)束標(biāo)記時(shí)會(huì)自動(dòng)觸發(fā)endDocument方法
public void endDocument() throws SAXException
{
System.out.println( "--------END--------" );
}
//當(dāng)遇到標(biāo)記開始時(shí)會(huì)自動(dòng)觸發(fā)startElement方法
//參數(shù)namespaceURI對(duì)應(yīng)的是名空間的URI,如果沒有則為空串
//參數(shù)localName對(duì)應(yīng)的是名空間的局部名,如果沒有則為空串
//參數(shù)qName對(duì)應(yīng)的是標(biāo)記名
//參數(shù)attr對(duì)應(yīng)的是屬性名
public void startElement(String namespaceURI,String localName,String qName,Attributes attr ) throws SAXException
{
tags.push(qName);
}
//當(dāng)遇到標(biāo)記結(jié)束時(shí)會(huì)自動(dòng)觸發(fā)endElement方法
public void endElement(String namespaceURI,String localName,String qName) throws SAXException
{
tags.pop();
}
//參數(shù)ch是包含字符串的字符數(shù)組
//參數(shù)start是字符串的開始位置
//參數(shù)length是字符串的長度
public void characters(char[] ch, int start, int length)throws SAXException
{
//從堆棧中獲取當(dāng)前節(jié)點(diǎn)的信息
String tag = (String) tags.peek();
//判斷當(dāng)前節(jié)點(diǎn)的名稱,如果是符合要求,則輸出屬性值
if (tag.equals("編號(hào)"))
{
System.out.println("編號(hào):" + new String(ch, start, length));
}
else if (tag.equals("名稱"))
{
System.out.println("名稱:"+ new String(ch, start, length));
}
else if (tag.equals("價(jià)格"))
{
System.out.println("價(jià)格:" + new String(ch, start, length));
}
}
public static void main( String[] argv )
{
try
{
//所要讀的XML文件名
String sFilename = "ware.xml";
//為解吸XML文件創(chuàng)建SAX對(duì)象
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser saxParser = null;
saxParser = spf.newSAXParser();
saxParser.parse(new File(sFilename),new SAXReader());
/*
以下部分是建立SAX解吸器對(duì)象的另外一種方法
// 建立SAX 2解析器...
XMLReader xr = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
// 安裝ContentHandler
xr.setContentHandler(new SAXReader());
// 解析文件
xr.parse(new InputSource(new FileReader(sFilename)));
*/
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -