Pull解析XML文件
Pull是Android内置的xml解析器。Pull解析器的运行方式与SAX解析器相似。它提供了类似的事件,如:开始元素和结束元素的事件,使用paser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以用一个switch对相应事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型节点的值
步骤
1.创建Pull解析器工厂对象
2.通过解析器工厂对象获取Pull解析器
3.设置解析器的读取文件的路径及解析的编码方式
4.获取一个事件
解析cat.xml案例代码
package work01;
import java.awt.print.Book;
import java.io.FileInputStream;
import java.util.ArrayList;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;
public class PullWork01 {
public static void main(String[] args) throws Exception{
//1.创建pull解析器工厂类
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
//2.创建pull解析器对象
XmlPullParser parser = factory.newPullParser();
//3.设置读取的文件,及读取的编码方式
parser.setInput(new FileInputStream("xml\\cat.xml"),"utf-8");
//4.获取第一个事件的状态
int type = parser.getEventType();
Cat cat = null;
String currentTagName;//当前的标签名字
ArrayList<Cat> list =new ArrayList<Cat>();
//while判断当没有到文件为 执行, XmlPullParser.End_DOCUMENT 1
while(type != XmlPullParser.END_DOCUMENT){
currentTagName = parser.getName();
switch (type) {
case XmlPullParser.START_TAG:
if(currentTagName.equals("cat")){
cat = new Cat();
}else if(currentTagName.equals("id")){
cat.setId(Integer.parseInt(parser.nextText()));
}else if(currentTagName.equals("name")){
cat.setName(parser.nextText());
}
break;
case XmlPullParser.END_TAG:
if(currentTagName.equals("cat")){
list.add(cat);
}
break;
}
//获取下一个事件
type = parser.next();
}
for(Cat c:list){
System.out.println(c.getId()+"---"+c.getName());
}
}
}
cat类:
class Cat{
private int id;
private String name;
public Cat() {
super();
// TODO Auto-generated constructor stub
}
public Cat(int id,String name) {
super();
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
解析的cat.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<cats>
<cat>
<id>1</id>
<name>波斯猫</name>
</cat>
<cat>
<id>2</id>
<name>雪地猫</name>
</cat>
<cat>
<id>3</id>
<name>越野猫</name>
</cat>
</cats>