XML解析

来源:互联网 发布:2017全球互联网数据 编辑:程序博客网 时间:2024/06/05 00:53

解析Xml

public class ParserUtils {    public static List<Person> parserXml(InputStream open) {        ArrayList<Person> list=null;        Person person=null;        try {            XmlPullParser parser = Xml.newPullParser();            //设置解析者的参数,用open流中进行解析,以utf-8的格式进行解析            parser.setInput(open, "utf-8");            //获取事件标签的类型            int type = parser.getEventType();            //如果类型为文档的话,            while(type!=XmlPullParser.END_DOCUMENT){                String name=parser.getName();                switch (type) {                case XmlPullParser.START_TAG:                    if("persons".equals(name)){                        list=new ArrayList<Person>();                    }else if("person".equals(name)){                        person=new Person();                    }else if("name".equals(name)){                        //nextText()就是取两个标签里面的值                        person.setName(parser.nextText());                        //如果字段里面有属性,可以通过getAttribute获取                        person.setPic(parser.getAttributeValue(0));                    }else if("age".equals(name)){                        person.setAge(Integer.parseInt(parser.nextText()));                    }break;                case XmlPullParser.END_TAG:                    if("person".equals(name)){                        list.add(person);                        System.out.println(person);                        person=null;                    }                    break;                }                //让它一直往下走                type=parser.next();            }        } catch (Exception e) {            e.printStackTrace();        }        return list;    }}

创建Xml文件

        //通过Xml获取一个XmlSerializer工具        XmlSerializer serializer = Xml.newSerializer();        //设置XmlSerializer序列化的参数,主要有输出流,要定义输出的地方,和文件字符格式,是否独立        try {            File file=new File(Environment.getExternalStorageDirectory(),"persons.xml");            FileOutputStream os=new FileOutputStream(file);            //设置序列化器的参数,这里面的是流的编码            serializer.setOutput(os, "utf_8");            //开始xml文档的开头,这里的编码是生成xml文件编码            serializer.startDocument("utf_8", true);                //写xml的根节点,namespace 命名空间,没有就写null                serializer.startTag(null, "persons");                //循环写person节点                for (Person p : list) {                    serializer.startTag(null, "person");                        //开始写属性节点,name,age                        serializer.startTag(null, "name");                            //内容                            serializer.text(p.getName());                        serializer.endTag(null, "name");                        serializer.startTag(null, "age");                        //内容                        serializer.text(p.getAge());                        serializer.endTag(null, "age");                    serializer.endTag(null, "person");                }                serializer.endTag(null, "persons");                //根节点结尾            //在写开头的时候就写结尾,不容易忘,也不容易乱            serializer.endDocument();        } catch (Exception e) {            e.printStackTrace();        }   
0 0
原创粉丝点击