在移动开发中,服务器常以xml形式向Android传递数据,这个时候就需要解析服务器传递过来的xml了,以下图为例,服务器传过来的数据如图所示
public class XmlParserUtils {
//解析xml的业务方法
public List<News> parserXml(InputStream in) throws Exception {
List<News> newsLists=null;
News news=null;
//获取xml的解析器
XmlPullParser xmlPullParser= Xml.newPullParser();
//设置解析器要解析的内容
xmlPullParser.setInput(in,"utf-8");
//获取解析的事件类型
int type=xmlPullParser.getEventType();
//不停的向下解析
while (type!=XmlPullParser.END_DOCUMENT){
//具体判断一下解析的是开始节点还是结束节点
switch (type){
case XmlPullParser.START_TAG://解析开始节点
//具体判断解析的是哪个开始标签
if("newss".equals(xmlPullParser.getName())){
//创建一个list集合
newsLists=new ArrayList<News>();
}
else if ("news".equals(xmlPullParser.getName())){
news=new News();
}
else if("title".equals(xmlPullParser.getName())){
news.setTitle(xmlPullParser.nextText());
}
else if ("description".equals(xmlPullParser.getName())){
news.setDescription(xmlPullParser.nextText());
}
else if ("image".equals(xmlPullParser.getName())){
news.setImage(xmlPullParser.nextText());
}
else if ("type".equals(xmlPullParser.getName())){
news.setType(xmlPullParser.nextText());
}
else if ("comment".equals(xmlPullParser.getName())){
news.setComment(xmlPullParser.nextText());
}
break;
case XmlPullParser.END_TAG: //解析结束标签
if ("news".equals(xmlPullParser.getName())){
//把Javabean添加到集合中
newsLists.add(news);
}
break;
}
//不断向下解析
type=xmlPullParser.next();
}
return newsLists ;
}
}