示例代码
XML文件
<?xml version="1.0" encoding="UTF-8"?><users><user><name>小王</name><age>22</age></user><user><name>小李</name><age>23</age></user><user><name>萧晨</name><age>24</age></user></users>
public class XmlUnil {
private InputStream input;
public XmlUnil(InputStream input){
this.input=input;
}
public List<User> parse(){
XmlPullParserFactory factory=null;
XmlPullParser xpp=null;
List<User> userlist=null;
try {
//从XML解析工厂中获得工厂实例
factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
//获得XML解析器
xpp=factory.newPullParser();
//获得输入流
xpp.setInput(new InputStreamReader(input));
//获得当前节点的事件类型
int eventType=xpp.getEventType();
//得到标签的名称
String tagName=null;
User user=null;
//当不是结束根节点是循环每个节点
while(eventType!=XmlPullParser.END_DOCUMENT){
if(eventType==XmlPullParser.START_DOCUMENT){//如果是文档的开始,创建集合
userlist=new ArrayList<User>();
System.out.println("--------获得集合对象");
}
else if(eventType==XmlPullParser.START_TAG){//如果是开始标签
//得到开始标签的名称
tagName=xpp.getName();
if(tagName.equals("user")){//如果标签名称是user
user=new User();
System.out.println("实例化用户对象");
}
}else if(eventType==XmlPullParser.TEXT){//如果是标签类型是文本
if(tagName.equals("name")){//如果文本标签的前一个标签是name标签
user.setName(xpp.getText());
System.out.println("设置name");
}else if(tagName.equals("age")){//如果文本标签的前一个标签是age标签
user.setAge(Integer.parseInt(xpp.getText()));
System.out.println("设置age");
}
}else if(eventType==XmlPullParser.END_TAG){//如果是结束标签
tagName=xpp.getName();
if(tagName.equals("user")){//结束标签式user,将其添加到集合中
userlist.add(user);
System.out.println("添加进集合");
}
}
eventType=xpp.next();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return userlist;
}
}