您的位置:首页 > 其它

Pull 解析XML文件

2016-09-02 23:36 579 查看

Pull解析:

优于SAX解析的Pull解析.不像SAX一解析就停不下来.Pull可以随叫随停,容易控制,因而受到重用.
在Android中有很多文件是以XML的格式.是以Pull解析的方式进行解析的.Pull解析器的运行方式与 SAX 解析器相似.但是比SAX解析要简单.不管是代码上还是理解上都更容易接受.和SAX解析对比起来更容易掌握

并且需要得到值得话可以直接调用nextText()方法.不用麻烦的各种转换了
话不多说看代码
package com.hutu;
import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;

import org.junit.Test;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
iport com.hutu.bean.Phone;
public class PullParse {
@Test
public void pullParse() throws Exception{
ArrayList<Phone> al= null;
Phone phone = null;
//获取XmlPullParserFactory工厂
XmlPullParserFactory parserFactory = XmlPullParserFactory.newInstance();
//通过工厂得到xml的解析器XmlPullParser
XmlPullParser parser = parserFactory.newPullParser();
//给解析器设置一个输入源.
//输入流绑定smartisan.xml.第二个参数为编码格式,使用UTF-8
parser.setInput(new FileInputStream(new File("smartisan.xml")), "UTF-8");
//获取当前事件类型
int eventType = parser.getEventType();
boolean flag = true;
//使用while循环,如果是读到文件末尾就结束
while (eventType != XmlPullParser.END_DOCUMENT && flag ) {
//
switch (eventType) {
case XmlPullParser.START_TAG:
//parser.getName 获取当前事件对应的元素名字
if ("锤子手机".equals(parser.getName())) {
//读到锤子手机的时候需要创建一个集合
al = new ArrayList<Phone>();
}else if ("机型".equals(parser.getName())) {
//创建一个对象用来存储.把后面的元素添加到对象中
phone = new Phone();
}else if ("品牌".equals(parser.getName())) {
//parser.nextText()获取当前节点的下一个文本内容
phone.setBrand(parser.nextText());
}else if ("价格".equals(parser.getName())) {
phone.setPrice(parser.nextText());
}else if ("厂商".equals(parser.getName())) {
phone.setDesigner(parser.nextText());
}
break;
case XmlPullParser.END_TAG:
//结束标签
if ("机型".equals(parser.getName())) {
//此时应该添加到集合中去
al.add(phone);
flag = false;
}
break;
}
/*
* 调用parser.next()方法解析下一个元素,解析之后要把赋值给eventType.这样在满足条件就会退出while循环.
* 否则evenType不更新的话就是系循环了
*/
eventType = parser.next();
}
//遍历集合
for (Phone phone2 : al) {
System.out.println(phone2);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xml 解析 SAX