转载请注明出处:http://blog.csdn.net/droyon/article/details/9346657

Sax解析xml

以下是测试Demo

运行程序类

public class TestApplication extends Application{private static final String LOG_TAG = "TestApplication";@Overridepublic void onCreate() {super.onCreate();SaxForXml handler = null;try {String readXmlFile = "test_config.xml";SAXParserFactory factory = SAXParserFactory.newInstance();//第一步SAXParser parse = factory.newSAXParser();//第二步XMLReader reader = parse.getXMLReader();//第三步handler = new SaxForXml();reader.setContentHandler(handler);//第四步//第一种获得InputSource的方式InputSource in = new InputSource(getResources().openRawResource(R.raw.test_config));//AssetManager assetM = getResources().getAssets();//第二种获得InputSourceInputSource in = new InputSource(assetM.open("test_config1.xml"));//第五步reader.parse(in);//第六步} catch (ParserConfigurationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SAXException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}ArrayList<StringObject> data = handler.getAllData();for(StringObject stringObject : data){Log.d(LOG_TAG, stringObject+"");}}}

解析类:

package com.example.androidtest;import java.util.ArrayList;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;import android.util.Log;public class SaxForXml extends DefaultHandler{private static final String LOG_TAG = "SaxForXml";private static final String sItem = "item_name";private static final String sFolder = "folder_name";private static final String sTagItem = "test_item";private static final String sTagFolder = "test_folder";private static ArrayList<StringObject> sAll = new ArrayList<StringObject>();private static StringObject sStringObject;@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {super.characters(ch, start, length);String temp = new String(ch, start, length);Log.d(LOG_TAG, "characters temp is:"+temp+"..start is:"+start+"..length is:"+length);if(sStringObject == null){return;}sStringObject.setS4(temp);}@Overridepublic void endDocument() throws SAXException {super.endDocument();Log.d(LOG_TAG, "endDocument");}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {super.endElement(uri, localName, qName);Log.d(LOG_TAG, "endElement uri is:"+uri+"..localName is:"+localName+"..qName is:"+qName);if(sStringObject == null){return;}sAll.add(sStringObject);sStringObject = null;}@Overridepublic void startDocument() throws SAXException {super.startDocument();Log.d(LOG_TAG, "startDocument");}@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {super.startElement(uri, localName, qName, attributes);Log.d(LOG_TAG, "startElement uri is:"+uri+"..localName is:"+localName+".. qName is:"+qName+".. attributes is:"+attributes);if(!sTagItem.equals(localName)&&!sTagFolder.equals(localName)){return;}sStringObject = new StringObject();sStringObject.setS1(localName);String string2 = attributes.getLocalName(0);String string3 = attributes.getValue(0);Log.d(LOG_TAG, "startElemement string2 is:"+string2+"..String3 is:"+string3);sStringObject.setS2(string2);sStringObject.setS3(string3);}public static ArrayList<StringObject> getAllData(){return sAll;}class StringObject{String s1;String s2;String s3;String s4;public void setS1(String s1) {this.s1 = s1;}public void setS2(String s2) {this.s2 = s2;}public void setS3(String s3) {this.s3 = s3;}public void setS4(String s4) {this.s4 = s4;}@Overridepublic String toString() {return "StringObject [s1=" + s1 + ", s2=" + s2 + ", s3=" + s3+ ", s4=" + s4 + "]";}}}

xml文件:

<?xml version="1.0" encoding="utf-8"?><test_config version="1">    <test_item item_name="item1">我们</test_item>    <test_item item_name="item2">都是</test_item>    <test_folder folder_name="folder1">好</test_folder>    <test_folder folder_name="folder2">孩子</test_folder></test_config>

测试结果:

StringObject [s1=test_item, s2=item_name, s3=item1, s4=我们]StringObject [s1=test_item, s2=item_name, s3=item2, s4=都是]StringObject [s1=test_folder, s2=folder_name, s3=folder1, s4=好]StringObject [s1=test_folder, s2=folder_name, s3=folder2, s4=孩子]


更多相关文章

  1. android 中 webview 怎么用 localStorage
  2. 在Ubuntu12.10-32bit上构建、测试WebRTC之Android示例WebRTCDemo
  3. Android(安卓)修改系统时区导致SimpleDateFormat无法输出正确时
  4. android NoSuchMethodError getDrawable
  5. 三十一、关于android camera setParameters出错
  6. android 从驱动到应用(一)
  7. Android(安卓)-- 零散记录[短信发送,系统拨号,单元测试]
  8. Android能够获取到唯一的设备ID吗?
  9. android 里 meta-data 的使用

随机推荐

  1. Android中的Can't create handler inside
  2. Android(安卓)进阶 教你打造 Android(安
  3. Android中绘(画)图Canvas的简析
  4. 【android】一套完善的Android异步任务类
  5. 通过广播Intent控制Android系统自带的音
  6. Android中滑屏初探 ---- scrollTo 以及 s
  7. Android(安卓)call setting 源码分析 从
  8. 在哪里学习用于Android(安卓)App开发的Ja
  9. Menu模拟键与android:targetSdkVersion
  10. Android开机启动Activity或者Service方法