"黑马程序员"Android 开发中的XmlPullParser解析器

来源:互联网 发布:迪优美特网络机顶盒 编辑:程序博客网 时间:2024/06/05 06:03
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
 
在Android或者许多java软件的开发过程中,都需要对xml文件进行解析。当然解析xml的方法很多,比如SAX,Dom等,这里主要是使用pull解析器来实现。    public class PersonServer {    /**     * 从xml文件中获取数据的方法     * @param xml     文件名称     * @return        返回数据     * @throws Exception     */        public static List<Person> getPerson(InputStream xml) throws Exception{        List<Person> persons = null;        Person person = null;        //android的Xml类来得到pull解析器对象,XmlPullParser pullParser = Xml.newPullParser()               XmlPullParser pullParser = XmlPullParserFactory.newInstance().newPullParser();        pullParser.setInput(xml, "utf-8");    //为pull解析器设置需要解析的xml数据        int event = pullParser.getEventType();    //通过getEventType方法来获得触发的第一个事件。        while(event!= XmlPullParser.END_DOCUMENT){            switch (event) {            case XmlPullParser.START_DOCUMENT:                persons = new ArrayList<Person>();                break;            case XmlPullParser.START_TAG:                if("person".equals(pullParser.getName())){                    int id = new Integer(pullParser.getAttributeValue(0));                    person = new Person();                    person.setId(id);                                       //int id = new Integer(id);                }                if("name".equals(pullParser.getName())){                    //pullParser.nextText()获取解析器指针指向name节点时,name节点后的文本节点的值;                    String name = pullParser.nextText();                    person.setName(name);                }                if("age".equals(pullParser.getName())){                    //pullParser.nextText()获取解析器指针指向name节点时,name节点后的文本节点的值;                    int age = new Integer(pullParser.nextText());                    person.setAge(age);                }                break;                           case XmlPullParser.END_TAG:                if("person".equals(pullParser.getName())){                    persons.add(person);                    person = null;                }                break;            }        event = pullParser.next();    //pull解析器不会主动解析xml文件,调用next()方法使得解析器的指针下移。        }        return persons;    }} 
0 0