示例文件
<?xml version="1.0" encoding="utf-8"?>
<cates>
<cate id="1">
<cateurl>/images/1.png</cateurl>
<catetitle>HAM火锅</catetitle>
<catecontent>双人餐提供免费WIFI</catecontent>
<cateprice>88元</cateprice>
</cate>
<cate id="2">
<cateurl>/images/2.png</cateurl>
<catetitle>朱师傅老母鸡滋补火锅</catetitle>
<catecontent>3人餐免费提供WIFI</catecontent>
<cateprice>78元</cateprice>
</cate>
<cate id="3">
<cateurl>/images/3.png</cateurl>
<catetitle>燕家厨房</catetitle>
<catecontent>4人餐免费提供WIFI</catecontent>
<cateprice>178元</cateprice>
</cate>
</cates>
//假设通过网络请求或是读取本地文件把Xml文件转化成一串字符串
//解析Xml方法如下
public void pullStr(String ss){
//在解析方法里实例化一个集合来存储数据
ArrayList<bean> b=null;
//获得解析器
XmlPullParser parser=Xml.newPullParser();
try {
//把需要解析的内容放置在解析器里
parser.setInput(new StringReader(ss));
//获取事件类型
int eventy=parser.getEventType();
String nodeName="";
//parser.END_DOCUMENT结束读取XML文档
while(eventy!=parser.END_DOCUMENT){
//事件类型分析
switch (eventy) {
//开始读取文档内容
case XmlPullParser.START_DOCUMENT:
b = new ArrayList<bean>();
break;
//开始读取某个标签
case XmlPullParser.START_TAG:
//通过解析器获得标签名称
nodeName=parser.getName();
if(nodeName.equals("cate")){
//获得标签名称实例化架包,
b2 = new bean();
}
break;
//读取文本内容
case XmlPullParser.TEXT:
//读取文本内容,把内容存入架包
if(nodeName.equals("cateurl")){
b2.setCateurl(parser.getText());
}
else if(nodeName.equals("catetitle")){
b2.setCatetitle(parser.getText());
}
else if(nodeName.equals("catecontent")){
b2.setCatecontent(parser.getText());
}
else if(nodeName.equals("cateprice")){
b2.setCateprice(parser.getText());
}
break;
case XmlPullParser.END_TAG:
//解析标签结束时把架包添加到集合里并叫架包返回空
if(parser.getName().equals("cate")){
b.add(b2);
b2=null;
}
//在判断外把标签名清空
nodeName="";
break;
default:
break;
}
//通过next遍历下一个事件
eventy=parser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
}