首页>>移动互联网>>Android XML内容解析及创建
Android XML内容解析及创建
来源: csdn 时间: 2015-02-14 15:21:22

Pull解析器的源码及文档下载网址:http://www.xmlpull.org/

步骤

添加文件 PullPersonService

public class PullPersonService {

    public static List<Person> getPersonList(InputStream inStream)

            throws Exception {

        List<Person> personList = null;

        XmlPullParser parser = Xml.newPullParser();

        parser.setInput(inStream, "utf-8");

        int eventType = parser.getEventType();

        Person person = null;

        while (eventType != XmlPullParser.END_DOCUMENT) {

            switch (eventType) {

            case XmlPullParser.START_DOCUMENT:

                personList = new ArrayList<Person>();

                break;

            case XmlPullParser.START_TAG:

                // 判断当前元素名是否为person

                if ("person".equals(parser.getName())) {

                    person = new Person();

                    person.setId(Integer.valueOf(parser.getAttributeValue(0)));

                } else if ("name".equals(parser.getName())) {

                    person.setName(parser.nextText());

                } else if ("age".equals(parser.getName())) {

                    person.setAge(Integer.valueOf(parser.nextText()));

                }

                break;

            case XmlPullParser.END_TAG:

                if ("person".equals(parser.getName()) && person != null) {

                    personList.add(person);

                    person = null;

                }

                break;

            }

            // next方法的调用导致下一个节点的解析,同时返回下一个节点解析的事件类型代码

            eventType = parser.next();

        }

        return personList;

    }

测试方法

public void testPull() throws Throwable {

        InputStream inStream = this.getClass().getClassLoader()

                .getResourceAsStream("person_list.xml");

        List<Person> personList = PullPersonService.getPersonList(inStream);

        Log.i("TAG", personList.toString());

    }

Pull实现xml文件的生成

有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中;或者使用DOM API生成XML文件,或者也可以使用pull解析器生成XML文件,这里推荐大家使用Pull解析器。

使用Pull解析器生成一个与itcast.xml文件内容相同的myitcast.xml文件,代码在本页下方备注

使用代码如下(生成XML文件):

File xmlFile = new File("person.xml");

FileOutputStream outStream = new FileOutputStream(xmlFile);

OutputStreamWriter outStreamWriter = new OutputStreamWriter(outStream, "UTF-8");

BufferedWriter writer = new BufferedWriter(outStreamWriter);

writeXML(persons, writer);

writer.flush();

writer.close();

如果只想得到生成的xml字符串内容,可以使用StringWriter:

StringWriter writer = new StringWriter();

writeXML(persons, writer);

String content = writer.toString();

实例介绍:

1、在PullPersonService中添加静态方法

public static void writePersonList(List<Person> personList, Writer writer)

        throws Exception {

    XmlSerializer serializer = Xml.newSerializer();

    serializer.setOutput(writer);

    // 相当于写入<?xml version="1.0" encoding="UTF-8"?>

    serializer.startDocument("utf-8", true);

    //写入跟元素的起始标签

    serializer.startTag(null, "persons");

    //遍历personList,并且将集合中的Person对象作为person节点写入xml

    for(Person person: personList){

        serializer.startTag(null, "person");

        //为person元素添加id属性

        serializer.attribute(null, "id", String.valueOf(person.getId()));

        serializer.startTag(null, "name");

        serializer.text(person.getName());

        serializer.endTag(null, "name");

        serializer.startTag(null, "age");

        serializer.text(String.valueOf(person.getAge()));

        serializer.endTag(null, "age");

        serializer.endTag(null, "person");

    }

    //写入跟元素的结束标签

    serializer.endTag(null, "persons");

    //结束文档的写入

    serializer.endDocument();

    writer.flush();

    writer.close();

}

添加测试方法

public void testPullSave() throws Throwable{

        List<Person> personList = new ArrayList<Person>();

        personList.add(new Person(999,"Tom", 20));

        personList.add(new Person(888,"Mary", 21));

        personList.add(new Person(777,"Jack", 10));

        File file = new File(this.getContext().getFilesDir(), "new_persons.xml");

        Writer writer = new FileWriter(file);

        PullPersonService.writePersonList(personList, writer);

    }

}

3、执行android单元测试

在视图中打开FileExplorer,在如下路径中找到生成的文件

data -> data -> cn.class3g.activity-> file – new_person.xml

本页地址:http://www.easytd.com/yidonghulianwang/d_15021415270.html

上一篇:Android NDK编译错误:undefined reference to JNI_CreateJavaVM 下一篇:Android修改Toast消息提示框字体大小