android:XML增删改查

来源:互联网 发布:人工智能是怎么来的 编辑:程序博客网 时间:2024/05/07 01:59

在项目中会遇到对于XML的增删改查。有一些模块数据需要动态的展示,根据用户偏好,或者用户手动输入的数据显示,我们将这些数据存储在SD卡下,已XML格式保存。

下面是代码:

MainActivity .java

package com.example.xmltest;import java.util.List;import android.os.Bundle;import android.os.Environment;import android.annotation.SuppressLint;import android.app.Activity;import android.util.Log;import android.view.Menu;@SuppressLint("UseValueOf")public class MainActivity extends Activity {     //private static final String TAG = "PersonServiceTest";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        XMLService  xmlService=new XMLService();        String path=Environment.getExternalStorageDirectory().toString()+"/person.xml";        /**查询数据        try {            List<Person> persons=xmlService.getPersons(path);            for(Person person:persons){                Log.i("Test",person.toString());            }        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }*/        /**增加数据        Person p=new Person(11, "bank", 25);        try {            xmlService.addPerson(p, path);            //查看结果            List<Person> persons=xmlService.getPersons(path);            for(Person person:persons){                Log.i("Test",person.toString());            }        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }*/        /**删除数据        try {            xmlService.deletePerson(32, path);            //查看结果            List<Person> persons=xmlService.getPersons(path);            for(Person person:persons){                Log.i("Test",person.toString());            }        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }*/        //修改数据        Person p=new Person(11, "bank", 100);        try {            xmlService.updatePerson(p, path);            //查看结果            List<Person> persons=xmlService.getPersons(path);            for(Person person:persons){                Log.i("Test",person.toString());            }        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.main, menu);        return true;    }}

数据类Person.java

package com.example.xmltest;public class Person {    private   int     id;    private   String  name;    private   int     age;    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 int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public Person(int id, String name, int age) {        this.id = id;        this.name = name;        this.age = age;    }    public Person(){}    @Override    public String toString() {        return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";    }}

工具类:完成xml的增删改查

package com.example.xmltest;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlSerializer;import android.os.Environment;import android.util.Xml;public class XMLService {    /**     * 查询XML文件下的数据     * @param path 文件路径     * @return     * @throws Exception     */        public List<Person>  getPersons(String path)   throws  Exception{            InputStream xml = new FileInputStream(path);            List<Person>  persons =null;            Person person=null;            XmlPullParser pullParser = Xml.newPullParser();            pullParser.setInput(xml, "UTF-8");            int event = pullParser.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);                    }                    if("name".equals(pullParser.getName())){                        String name = pullParser.nextText();                        person.setName(name);                    }                    if("age".equals(pullParser.getName())){                        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();            }            return persons;        }       /**     * 增加数据     *      * @param person     * @param path     * @throws Exception     */        public void addPerson(Person person,String path)   throws  Exception{            List<Person> persons=null;            //1、先解析xml数据            File file=new File(path);            try {                persons= getPersons(path);            } catch (Exception e) {                e.printStackTrace();            }            //2、添加入新的数据person            persons.add(person);            //3、生成新的XML            file.delete();            NewXML(persons);        }    /**     * 删除数据     * @param id     * @param path     * @throws Exception     */        public void deletePerson(int id,String path)   throws  Exception{            List<Person> persons=null;            //1、先解析xml数据            File file=new File(path);            try {                persons= getPersons(path);            } catch (Exception e) {                e.printStackTrace();            }            //2、删除person            Person p=null;            for (Person person:persons) {                if(person.getId()==id){                   p=person;                }            }            persons.remove(p);            //3、生成新的XML            file.delete();            NewXML(persons);        }        /**         * 修改数据,传入需要需改的person         * @param p         * @param path         * @throws Exception         */            public void updatePerson(Person p,String path)   throws  Exception{                List<Person> persons=null;                //先解析xml数据                File file=new File(path);                try {                    persons= getPersons(path);                } catch (Exception e) {                    e.printStackTrace();                }                //修改person                Person p1=null;                for (Person person:persons) {                    if(person.getId()==p.getId()){                      p1=person;                    }                }                   persons.remove(p1);                   persons.add(p);                //生成新的XML                file.delete();                NewXML(persons);            }    /**     *根据传入的persons,在指定路径下,重新生成XML文件     * @param persons     * @param out     * @throws Exception     */    public void NewXML(List<Person> persons) throws Exception{        File xmlFile = new File(Environment.getExternalStorageDirectory().toString(), "person.xml");        FileOutputStream outStream = new FileOutputStream(xmlFile);        XmlSerializer serializer = Xml.newSerializer();        serializer.setOutput(outStream, "UTF-8");        serializer.startDocument("UTF-8", true);        serializer.startTag(null, "persons");        for(Person person : persons){            serializer.startTag(null, "person");            serializer.attribute(null, "id", person.getId()+"");            serializer.startTag(null, "name");            serializer.text(person.getName());            serializer.endTag(null, "name");            serializer.startTag(null, "age");            serializer.text(person.getAge()+"");            serializer.endTag(null, "age");            serializer.endTag(null, "person");        }        serializer.endTag(null, "persons");        serializer.endDocument();        outStream.flush();        outStream.close();    }}
0 0
原创粉丝点击