http://blog.csdn.net/dinglang_2009/article/details/6940225
上面这个链接详细介绍了几种XML的解析方法以及原理。
本文只实现一种方法:即是使用XmlResourceParser类来解析。
下面是实现思路:
1.读取XML文件;
2.获取读取事件,如果文件结束,则停止解析;
3.处理读取事件;
4.回到第二步。
下面是实现过程:
1.要解析的XML文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<customer name="jim" age="123" gender="male" email="mail@hostname.com"/>
<customer name="tom" age="123" gender="female" email="mail@hostname.com"/>
<customer name="jim" age="123" gender="male" email="mail@hostname.com"/>
<customer name="tom" age="123" gender="female" email="mail@hostname.com"/>
<customer name="jim" age="123" gender="male" email="mail@hostname.com"/>
<customer name="tom" age="123" gender="female" email="mail@hostname.com"/>
</resources>
2.读取XML文件;
Resources rs = getResources();
XmlResourceParser xmlRS = rs.getXml(R.xml.test);//这里是从res文件夹下读取
3.解析过程
try {
//是否是文件的结尾,是就停止循环,否就继续循环
while(xmlRS.getEventType() != XmlResourceParser.END_DOCUMENT) {
//是否是标签的开始
if(xmlRS.getEventType()==XmlResourceParser.START_TAG){
//是,就获取标签的名字
if(xmlRS.getName().equals("customer")){
//获取标签的自属性的值
sb.append(xmlRS.getAttributeValue(0));
sb.append(xmlRS.getAttributeValue(1));
sb.append(xmlRS.getAttributeValue(2));
sb.append(xmlRS.getAttributeValue(3));
sb.append("\n");
log(sb.toString());
}
}else if(xmlRS.getEventType()==XmlResourceParser.END_TAG){
}else if(xmlRS.getEventType()==XmlResourceParser.TEXT){
}
//获取下一个读取事件
xmlRS.next();
}
//在TextView中显示文本
textView.setText(sb.toString());
} catch (Exception e) {
e.printStackTrace();
}