pull解析

来源:互联网 发布:清华it电脑培训学校 编辑:程序博客网 时间:2024/05/14 23:18

Pull解析:

Readerinput stream的区别在于是否支持中文。

循环结束的条件是:获得的event type等于文档结束事件类型

document解析和sax解析的一个组合。

编程要形成自己的思路,默写代码

package com.pull;import java.io.FileInputStream;import java.util.ArrayList;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserFactory;import com.sax.Person;public class PullParserTest {static ArrayList<Person> list = null;static Person p = null;public static void main(String[] args) {try {// 创建解析工厂XmlPullParserFactory factory = XmlPullParserFactory.newInstance();// 根据工厂创建解析器XmlPullParser parser = factory.newPullParser();// 解析xml文件parser.setInput(new FileInputStream("src/com/sax/Person.xml"),"UTF-8");// 解析文件parser.next();// 找到第一个触发事件并一直往后走// 获取事件类型int eventType = parser.getEventType();// 只要不是读到文档结束,循环一直执行while (eventType != XmlPullParser.END_DOCUMENT) {// 如果当前事件类型是一个标签开始事件if (eventType == XmlPullParser.START_TAG) {if ("persons".equals(parser.getName())) {list = new ArrayList<Person>();} else if ("person".equals(parser.getName())) {p = new Person();String idValue = parser.getAttributeValue(0);p.setId(Integer.parseInt(idValue));} else if ("name".equals(parser.getName())) {String nameValue = parser.nextText();p.setName(nameValue);} else if ("age".equals(parser.getName())) {String ageValue = parser.nextText();p.setAge(Integer.parseInt(ageValue));}}else if(eventType==XmlPullParser.END_TAG){if("person".equals(parser.getName())){list.add(p);}}//找下一个事件parser.next();//重新获取事件类型eventType=parser.getEventType();}for(Person person:list){System.out.println("id="+person.getId()+"  ");System.out.println("age="+person.getAge()+"  ");System.out.println("name="+person.getName()+"  ");System.out.println("*********************");}} catch (Exception e) {}}}