您的位置:首页 > 移动开发 > Android开发

一个android中使用sax解析xml的例子

2012-09-20 21:51 561 查看
config.xml文件如下:

[xhtml]
view plaincopy

<config>
<string-array name = "system_app_ti60">
<item>Browser.apk</item>
<item>Phone.apk</item>
<item>Contact.apk</item>
<item>Settings.apk</item>
<item>Gmail.apk</item>
</string-array>
</config>



用到的几个主要的类:

import org.xml.sax.Attributes;

import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;

import javax.xml.parsers.SAXParserFactory;

import javax.xml.parsers.SAXParser;

import javax.xml.parsers.ParserConfigurationException;



XmlParser类:主要用于处理读取到的数据,如标签,文本等信息。

[java]
view plaincopy

private class XmlParser extends DefaultHandler
{
private ArrayList<String> array = new ArrayList<String>();
String mName = null;
private boolean mFound = false;

public ArrayList<String> getArrayString(){
return array;
}
//读取到开始标签信息时回调
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException{
if(localName.equals("string-array")){
mName = attributes.getValue(0);
if(mName.equals("system_app_ti60")){
mFound = true;
}

}
}
//读取到文本信息时回调
@Override
public void characters(char ch [ ], int start, int length) throws SAXException{
if(mFound){
String value = new String(ch,start,length);
if(!value.endsWith("apk"))
return;
array.add(value);
}
}
//读取到结束标签信息时回调
@Override
public void endElement(String uri, String localName, String qName) throws SAXException{
if(localName.equals("string-array")){
if(mFound){
mFound = false;
}

}
}
}



调用测试:

[c-sharp]
view plaincopy

try{
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
XmlParser handler = new XmlParser();
parser.parse(new File("/system_extend/system_extend_config.xml"), handler);
AppList = handler.getArrayString();

}
catch(SAXException e){
Log.i("hxd","SAXException");
return;
}
catch(ParserConfigurationException e){
Log.i("hxd","ParserConfigurationException");
return;
}
catch(IOException e){
Log.i("hxd","IOException");
return;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: