XML pull解析

XML返回实例

88
国语
http://musicdata.baidu.com/data2/pic/f201bdf2c3c41cef7b74985aee3b7e23/266941936/266941936.jpg
http://musicdata.baidu.com/data2/pic/c4ed8fc38ecc1d69c87e5c5183fe3f65/266941939/266941939.jpg
内地
0
2016-06-23
1
http://musicdata.baidu.com/data2/lrc/60902a2420610e8d3ac7ee2f9e754dc1/266942158/266942158.lrc
1
750172
2517
88
64,128,256,320,flac
影视原声
266942077
<span class="text">我好像在哪见过你</span>
2517
薛之谦
266941947
我好像在哪见过你
薛之谦

XML PULL 解析

public static List parseMusicList(InputStream is) throws Exception {
//创建XmlPull解析器
XmlPullParser parser = Xml.newPullParser();
//设置解析器的输入流,和解析编码
parser.setInput(is, "utf-8");
//获取事件类型
int eventType = parser.getEventType();
//创建Musics集合
List musics = new ArrayList();
//设置实体类Music为null
Music music = null;
//使用while循环进行事件驱动
while (eventType != XmlPullParser.END_DOCUMENT) {
//判断事件类型
switch (eventType) {
//事件类型是开始标签
case XmlPullParser.START_TAG:
String name = parser.getName();
//如果名字是(song)
if (name.equals("song")) {
music = new Music();//创建实体类music
musics.add(music); //添加到music集合中
} else if (name.equals("pic_big")) {//如果名字是(pic_big)
music.setPic_big(parser.nextText());//把pic_big的属性值赋给music实体类中
} else if (name.equals("pic_small")) {
music.setPic_small(parser.nextText());
} else if (name.equals("publishtime")) {
music.setPublishtime(parser.nextText());
} else if (name.equals("lrclink")) {
music.setLrclink(parser.nextText());
} else if (name.equals("song_id")) {
music.setSong_id(parser.nextText());
} else if (name.equals("title")) {
music.setTitle(parser.nextText());
} else if (name.equals("author")) {
music.setAuthor(parser.nextText());
} else if (name.equals("album_id")) {
music.setAlbum_id(parser.nextText());
} else if (name.equals("album_title")) {
music.setAlbum_title(parser.nextText());
} else if (name.equals("artist_name")) {
music.setArtist_name(parser.nextText());
}
break;
}
//向后继续驱动事件
eventType = parser.next();
}
return musics;
}

PULL解析是使用事件驱动的方式,边读取边解析。
 当PULL解析器遇到文档中的某个节点时,都会触发
 相应事件,我们可以捕获这些事件,并且在该时间
 点解析相关内容。


如何使用PULL的方式解析xml?
1>创建xmlpull解析器:
  XmlPullParser parser = Xml.newPullParser();
  parser.setInput(is);
2>获取事件类型,并且配合while循环,不断驱动事件
  并且解析文档内容:
  int type=parser.getEventType();
  while(type != XmlPullParser.END_DOCUMENT){
     根据事件类型解析文档
     向后继续驱动事件
     type = parser.next();
  }

你可能感兴趣的:(XML pull解析)