Android向本地写入一个XML文件和解析XML文件
在网络存储过程中有很多时候会遇到XML文件解析和使用XML保存一些信息,解析XML文件用的比较多的方法是pull解析和SAX解析,但是我一般只用pull解析,下面就向cd卡写入一个XML文件,然后再使用pull解析的方法对文件进行解析。
一、向SD卡中写入一个XML文件:
/*** 向SD卡写入一个XML文件* * @param v*/public void savexml(View v) {try {File file = new File(Environment.getExternalStorageDirectory(),"persons.xml");FileOutputStream fos = new FileOutputStream(file);// 获得一个序列化工具XmlSerializer serializer = Xml.newSerializer();serializer.setOutput(fos, "utf-8");// 设置文件头serializer.startDocument("utf-8", true);serializer.startTag(null, "persons");for (int i = 0; i < 10; i++) {serializer.startTag(null, "person");serializer.attribute(null, "id", String.valueOf(i));// 写姓名serializer.startTag(null, "name");serializer.text("张三" + i);serializer.endTag(null, "name");// 写性别serializer.startTag(null, "gender");serializer.text("男" + i);serializer.endTag(null, "gender");// 写年龄serializer.startTag(null, "age");serializer.text("1" + i);serializer.endTag(null, "age");serializer.endTag(null, "person");}serializer.endTag(null, "persons");serializer.endDocument();fos.close();Toast.makeText(MainActivity.this, "写入成功", 0).show();} catch (Exception e) {e.printStackTrace();Toast.makeText(MainActivity.this, "写入失败", 0).show();}}1、设置XML文件保存的地址,2、获得一个序列化工具,3、写XML文件的头,4、循环写入信息。
最后得到的XML文件
二、解析本地XML文件
/*** 读取SD卡中的XML文件,使用pull解析* * @param v*/public void readxml(View v) {try {File path = new File(Environment.getExternalStorageDirectory(),"persons.xml");FileInputStream fis = new FileInputStream(path);// 获得pull解析器对象XmlPullParser parser = Xml.newPullParser();// 指定解析的文件和编码格式parser.setInput(fis, "utf-8");int eventType = parser.getEventType(); // 获得事件类型String id = null;String name = null;String gender = null;String age = null;while (eventType != XmlPullParser.END_DOCUMENT) {String tagName = parser.getName(); // 获得当前节点的名称switch (eventType) {case XmlPullParser.START_TAG: // 当前等于开始节点 if ("persons".equals(tagName)) { // } else if ("person".equals(tagName)) { // id = parser.getAttributeValue(null, "id");} else if ("name".equals(tagName)) { // name = parser.nextText();}else if ("gender".equals(tagName)) { // gender = parser.nextText();} else if ("age".equals(tagName)) { // age = parser.nextText();}break;case XmlPullParser.END_TAG: // if ("person".equals(tagName)) {Log.i(TAG, "id---" + id);Log.i(TAG, "name---" + name);Log.i(TAG, "gender---" + gender);Log.i(TAG, "age---" + age);}break;default:break;}eventType = parser.next(); // 获得下一个事件类型}} catch (Exception e) {e.printStackTrace();}finally{}
1、获取要解析XML文件的地址,2、获得pull解析工具,3、根据标签的不同判断并保存信息。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
