抑郁症健康,内容丰富有趣,生活中的好帮手!
抑郁症健康 > android xml解析demo Android解析自定义xml文件--Sax解析xml文件 测试demo(方案二)...

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

时间:2020-03-11 18:13:44

相关推荐

转载请注明出处:/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=孩子]

如果觉得《android xml解析demo Android解析自定义xml文件--Sax解析xml文件 测试demo(方案二)...》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。