android xml解析demo,Android解析自定义xml文件--Sax解析xml文件,测试demo(方案二)...

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

Sax解析xml

以下是测试Demo

运行程序类

public class TestApplication extends Application{

private static final String LOG_TAG = "TestApplication";

@Override

public 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();//第二种获得InputSource

InputSource in = new InputSource(assetM.open("test_config1.xml"));//第五步

reader.parse(in);//第六步

} catch (ParserConfigurationException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SAXException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

ArrayList 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 sAll = new ArrayList();

private static StringObject sStringObject;

@Override

public 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);

}

@Override

public void endDocument() throws SAXException {

super.endDocument();

Log.d(LOG_TAG, "endDocument");

}

@Override

public 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;

}

@Override

public void startDocument() throws SAXException {

super.startDocument();

Log.d(LOG_TAG, "startDocument");

}

@Override

public 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 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;

}

@Override

public String toString() {

return "StringObject [s1=" + s1 + ", s2=" + s2 + ", s3=" + s3

+ ", s4=" + s4 + "]";

}

}

}

xml文件:

我们

都是

孩子

测试结果:

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=孩子]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值