读写xml文件

xml文件:assets/person.xml

<?xml version="1.0" encoding="utf-8"?>
<persons>
    <person id="1">
        <name>jack</name>
        <password>12345</password>
    </person>
    <person id="2">
        <name>tom</name>
        <password>45733</password>
    </person>
    <person id="3">
        <name>helen</name>
        <password>123s432</password>
    </person>
</persons>

person类:

package com.example.xmldemo.domain;

public class Person {
    private int id;
    private String name;
    private String password;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Person(int id, String name, String password) {
        super();
        this.id = id;
        this.name = name;
        this.password = password;
    }

    public Person(String name, String password) {
        super();
        this.name = name;
        this.password = password;
    }

    public Person() {
    }
}

把xml文件内容转成object list:

private List<Person> xmlToObjList() {
        XmlPullParser parser = Xml.newPullParser();
        InputStream is = null;
        List<Person> xmlDatas = new ArrayList<Person>();
        try {
            is = getAssets().open("person.xml");
            // 关联要解析的xml文档
            parser.setInput(is, "utf-8");
            Person person = null;
            int event = parser.getEventType();
            // 不等于文档结束事件循环
            while (event != XmlPullParser.END_DOCUMENT) {
                if (XmlPullParser.START_TAG == event) {
                    // person标签开始
                    if ("person".equals(parser.getName())) {
                        person = new Person();
                        int pid = Integer.parseInt(parser.getAttributeValue(0));
                        person.setId(pid);
                    }
                    // name标签开始
                    if ("name".equals(parser.getName())) {
                        String name = parser.nextText();
                        person.setName(name);

                    }
                    if ("password".equals(parser.getName())) {
                        String password = parser.nextText();
                        person.setPassword(password);
                    }
                }
                if (XmlPullParser.END_TAG == event) {
                    // person标签结束
                    if ("person".equals(parser.getName())) {

                        xmlDatas.add(person);
                    }
                }
                event = parser.next();
            }

            // 验证:
            for (Person p : xmlDatas) {
                Log.i("XML", p.getName() + p.getPassword());
            }

        } catch (IOException e) {
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } finally {
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return xmlDatas;
    }

把object list内容写入xml:

private void objToXml(List<Person> xmlDatas) {
        XmlSerializer serializer = Xml.newSerializer();
        OutputStream os = null;
        try {
            // 保存位置
            os = openFileOutput("person.xml", MODE_PRIVATE);
            serializer.setOutput(os, "utf-8");
            // 生成xml文件
            serializer.startDocument("utf-8", false);
            // 开始标签:<persons>
            serializer.startTag(null, "persons");
            for (Person person : xmlDatas) {
                // <person>
                serializer.startTag(null, "person");
                // 生成id属性
                serializer.attribute(null, "id", String.valueOf(person.getId()));
                // <name>标签
                serializer.startTag(null, "name");
                // 内容
                serializer.text(person.getName());
                // </name>标签
                serializer.endTag(null, "name");

                serializer.startTag(null, "password");
                serializer.text(person.getPassword());
                serializer.endTag(null, "password");

                serializer.endTag(null, "person");
            }
            serializer.endTag(null, "persons");
            // 结束
            serializer.endDocument();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (os != null) {
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        Toast.makeText(this, "success", Toast.LENGTH_SHORT).show();
    }

源码地址:

https://github.com/amorypepelu/XMLDemo

时间: 2024-10-31 23:49:05

读写xml文件的相关文章

使用dom4j 读写xml文件

dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,同时它也是一个开放源代码的软件. String fileName="D:\\version.xml"; File inputXML=new File(fileName); //使用 SAXReader 解析 XML 文档 version.xml SAXReader saxReader=new SAXReader();

C#读写xml文件

c#读写xml文件已知有一个XML文件(bookstore.xml)如下: Code<?xml version="1.0" encoding="gb2312"?><bookstore> <book genre="fantasy" ISBN="2-3631-4"> <title>Oberon's Legacy</title> <author>Corets,

iOS 读写xml文件

//*********写入文件,传入要保存的信息*********//保存xml -(void) saveXml:(NSString *)data { //创建文件管理器 NSFileManager *fileManager = [NSFileManager defaultManager ]; //获取路径 //参数NSDocumentDirectory要获取那种路径 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentD

JAXB方式读写XML文件

import java.io.File; import java.util.ArrayList; import java.util.List; import javax.xml.bind.JAXB; import org.apache.log4j.Logger; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import cn.com.starit.ts.nms.collec

PHP读写XML文件的四种方法

PHP对XML文件进行读写操作的方法一共有四种,分别是:字符串方式直接读写.DOMDocument读写. XMLWrite写和XMLReader读.SimpleXML读写,本文将依次对这四种方法进行介绍. 介绍之前首先对本文例子使用的数据和文件进行说明.本文写XML文件的例子都是从MySQL中读取数据然后 写入到XML文件中,读XML文件的例子都是从XML文件中读取数据后组装成数组的格式,数组中每个元素对应数 据库中的一条记录. MySQL中的数据: XML文件: 1 2 3 4 5 6 7 8

cocos2d-x 读写 xml 文件

cocos2d-x 读写 xml 文件 A product of cheungmine 使用cocos2d-x开发2d游戏确实方便,但是对于一般的小游戏,经常需要的工作是UI布局设计和调整,代码改来改去,真不方便.做游戏开发早晚要有自己的UI模块.不妨称之为cocos2d-layout.cocos2d-layout相当于舞台的布景.布景师根据导演的要求(xml)来生成舞台.布景师在现实生活中当然是人来做,在程序里就是一段程序或代码库.这个没用通用的万能的库可以做这个事情,因为游戏的内容是差别很大

PHP读写XML文件(一)

PHP读写XML文件的方法有四种,从本文开始将连续使用四篇博文来分别介绍这四种方法.本文介绍的是第一种方法: 使用字符串操作的方式来对XML文件进行读写操作. 一.PHP字符串方式写XML文件: 首先介绍PHP使用字符串方式写XML文件.本例将读取数据库中的数据,输出为XML文件. 数据库数据如下: 读取数据并写入XML文件代码: <?php /** * function:使用字符串方式写XML文件 * author:JetWu * date:2016.12.03 **/ $mysqli = m

C#读写xml文件的常用方法

已知有一个XML文件(bookshop.xml)如下: <?xml version="1.0" encoding="gb2312" ?> <bookshop> <book genre="fantasy" ISBN="2-2312-2"> <title>Oberon Legacy</title> <author>Eva</author> <

ASP.NET读写XML文件

本文中的方式主要是用序列化与反序列化的方式来实现读写xml文件,注意,不是特指的web.config文件,是指自定义的config文件. 下面的是一个xml读写操作类,包含读方法用到了反序列化方式,还有写方式,用到了序列化方式. using System; using System.IO; using System.Web; using System.Xml.Serialization; namespace WX_Tools { /// <summary> /// Xml文件读写类 /// &

C# 读写XML文件最简单方法

C#史上最简单读写xml文件方式,创建控制台应用程序赋值代码,就可以运行,需要改动,请自行调整 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; namespace ConsoleApp1 { class Program { public cons