Paste_Image.png
事件編程模式三要求:
事件源:xml文件
事件:解析到開始標簽(包含屬性),解析到結束標簽,解析文本內容
監聽器:DefaultHandler
public class demo02 {
public static void main(String[] args) throws Exception, SAXException {
//1)創建SAXParser解析對象
SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
//2)解析xml文件
/**
* 參數一: 需要解析的xml文件
* 參數二: 指定的DefaultHandler
*/
//類似于注冊監聽器
parser.parse(new File("./src/contact.xml"), new MyDefaultHandler1());
}
}
public class MyDefaultHandler1 extends DefaultHandler{
/**
* 遇到xml文檔的開始位置觸發此方法
*/
@Override
public void startDocument() throws SAXException {
System.out.println("開始讀取xml文檔");
}
/**
* 遇到每個開始標簽觸發次方法
* @param qName: 表示當前讀到的開始標簽名稱
* @param attributes : 屬性列表
*/
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
System.out.println("開始讀取到該標簽:"+qName);
}
/**
* 遇到每個結束標簽時觸發此方法
* @param qName: 當前讀到的結束標簽名稱
*/
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
System.out.println("讀到該標簽尾:"+qName);
}
/**
* 遇到文本內容觸發此方法
* 如何獲取當前讀到的內容?
* char[]: 表示到目前為止讀到的文本內容
* start: 表示當前內容的起始位置
* length: 表示當前內容的長度
*/
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
/**
* char[]內容:標簽里的內容
* start:標簽內容起始標簽
* length:標簽內容長度
*/
//獲取當前讀到的內容
String content = new String(ch,start,length);
System.out.println("讀到的標簽內容:"+content);
}
/**
* 遇到xml文檔 的結尾
*/
@Override
public void endDocument() throws SAXException {
System.out.println("整個文檔讀取完閉");
}
}
Paste_Image.png