Android 学习之pull解析Xml

一、 PUll解析Xml

 

public static List<Person> xmlParser(InputStream xml) throws Exception
    {
        List<Person> persons=null;
        Person p=null;
        XmlPullParser parser=Xml.newPullParser();
        parser.setInput(xml, "UTF-8");
        int event=parser.getEventType();
        while(event!=XmlPullParser.END_DOCUMENT)
        {
            switch (event) {
            case XmlPullParser.START_DOCUMENT:
                persons=new ArrayList<Person>();
                break;
            case XmlPullParser.START_TAG:
                if (parser.getName().equals("person")) 
                {
                    p=new Person();
                    p.setId(Integer.parseInt(parser.getAttributeValue(0)));
                }
                if (parser.getName().equals("name")) 
                {
                    p.setName(parser.nextText());
                }
                if(parser.getName().equals("age"))
                {
                    p.setAge(Integer.parseInt(parser.nextText()));
                }
                break;
                case XmlPullParser.END_TAG:
                if (parser.getName().equals("person")) 
                {
                    persons.add(p);
                    p=null;
                }
                break;
            }
            event=parser.next();
        }
        return persons;
    }

 二、以Xml格式保存信息

public static void saveAsXml(List<Person> persons,OutputStream os)throws Exception
    {
        XmlSerializer xmlSerial= Xml.newSerializer();
        xmlSerial.setOutput(os, "UTF-8");
        xmlSerial.startDocument("UTF-8", true);
        xmlSerial.startTag(null, "persons");
        for(Person person : persons)
        {
            xmlSerial.startTag(null, "person");
            xmlSerial.attribute(null, "id",String.valueOf(person.getId()));
            xmlSerial.startTag(null, "name");
            xmlSerial.text(person.getName());
            xmlSerial.endTag(null, "name");
            xmlSerial.startTag(null, "age");
            xmlSerial.text(String.valueOf(person.getAge()));
            xmlSerial.endTag(null, "age");        
            xmlSerial.endTag(null, "person");
        }
        xmlSerial.endTag(null, "persons");
        xmlSerial.endDocument();
        os.flush();
        os.close();
    }

 

posted on 2014-07-01 23:43  cnsli2012  阅读(179)  评论(0编辑  收藏  举报

导航