Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android之XML文件解析 -- SAX

android之XML文件解析 -- SAX

編輯:關於Android編程

xml文件解析之SAX

下面的實例代碼主要采用的是SAX事件驅動處理機制來解析XML文件,SAX解析XML是通過逐行掃描的方式完成的,占用內存小。dom機制是將文件全部讀出,然後再以樹結構的形式,來完成查找、刪除等操作,對內存占用較大


MyContentHandler.java 此文件是事件處理器實現


package com.example.analysisxml;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;





public class MyContentHandler extends DefaultHandler {

String tagName;
String id,name,sex;

//獲取標簽的內容,標簽開始和標簽結束,都會調用
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
super.characters(ch, start, length);
//防止標簽結束後繼續執行下面操作
if(tagName == null)
return;
String str = new String(ch, start, length);
if(tagName.equals("name")){
name = str;
}
else if(tagName.equals("sex")){
sex = str;
}
//System.out.println("tagName =" + tagName + ";str = " + name);
}

//文檔結束時調用
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
System.out.println("-------------end------------");
}

//標簽結束時調用
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
super.endElement(uri, localName, qName);
//標簽結束後防止調用characters()方法執行操作
tagName = null;
if(localName.equals("worker")){
System.out.print("name = " + name);
System.out.print(" sex = " + sex);
System.out.println();
}

}

//文檔開始
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();

System.out.println("-------------start------------");

}

//標簽開始
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
super.startElement(uri, localName, qName, attributes);
tagName = localName;
//System.out.println("tagName =" + tagName);
if(localName.equals("worker")){
for(int i = 0;i < attributes.getLength();i++){
System.out.println(attributes.getLocalName(i) + " = " + attributes.getValue(i));
}
}
}

}

以下代碼是實現調用解析xml 字符串strXML

//創建一個SAX解析工廠
SAXParserFactory factory = SAXParserFactory.newInstance();
XMLReader reader = factory.newSAXParser().getXMLReader();


//為XMLReader設置事件處理器
reader.setContentHandler(new MyContentHandler());


//開始解析XML
reader.parse(new InputSource(new StringReader(strXML)));



XML文件的格式如下:


same
man



man


rose
man



man


jack
man


man




  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved