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
- android:XML增删改查
- XML 增删查改
- XML 增删改查
- xml增删改查
- xml增删查改
- XML增删改查
- xml实现增删查改
- Xml文档增删改查
- XML的增删改查
- xml的增删改查
- .NET XML增删查改
- XML的增删改查
- XML的增删改查
- XML的增删改查
- C#+ XML 增删改查
- Xml的增删改查
- android 联系人 增删改查
- Android SQLite增删改查
- 【Android】socket局域网通信
- C#基础
- spring下的子项目
- typeset的常见用法
- lucas数论定理学习
- android:XML增删改查
- ansj简单笔记
- c++11特性与cocos2d-x 3.0之std::bind与std::function
- RPM -U 升级机制探索
- 启动2015世界人工智能系统智商排名,检测人工智能是否超越人类
- jsdoc块和内联标签
- 不固定流量的最小费用流 生产销售规划 uva11613 - Acme Corporation
- LeetCode-Lowest Common Ancestor of a Binary Search Tree
- nyoj--32--组合数