02_Android写xml文件和读xml文件

??

  1. 新建Android项目
  2. 编写AndroidManifest.xml,使本Android项目具有单元测试功能和写外设的权限。

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.itheima28.xmldemo"

android:versionCode="1"

android:versionName="1.0" >

<uses-sdk

android:minSdkVersion="8"

android:targetSdkVersion="19" />

<!—用于单元测试—>

<instrumentation

android:name="android.test.InstrumentationTestRunner"

android:targetPackage="com.itheima28.xmldemo">

</instrumentation>

<!—写外设的权限à

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<application

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

<!—单元测试所需à

<uses-library android:name="android.test.runner"/>

<activity

android:name="com.itheima28.xmldemo.MainActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>

</manifest>

3 Person对象


package com.itheima28.xmldemo;

public class Person {

private int id;

private String name;

private int age;

@Override

public String toString() {

return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";

}

public Person() {

super();

}

public Person(int id, String name, int age) {

super();

this.id = id;

this.name = name;

this.age = 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;

}

}

4 写xml文件和读xml文件的代码


package com.itheima28.xmldemo.test;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.util.ArrayList;

import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import org.xmlpull.v1.XmlSerializer;

import android.os.Environment;

import android.test.AndroidTestCase;

import android.util.Log;

import android.util.Xml;

import com.itheima28.xmldemo.Person;

public class TestCase extends AndroidTestCase {

/**

* 测试写xml文件

*/

public void testWriteXml() {

writeXmlToLocal();

}

/**

* 测试读xml文件

*/

public void testReadXml() {

List<Person> personList = parseXmlFromLocal();

for (Person person : personList) {

Log.i("TestCase",person.toString());

}

}

/**

* 写xml文件到本地

*/

private void writeXmlToLocal() {

List<Person> personList = getPersonList();

//获得序列化对象

XmlSerializer serializer = Xml.newSerializer();

try {

//测试获得到的位置是:/storage/emulated/0

File path = new File(Environment.getExternalStorageDirectory(),"persons.xml");

FileOutputStream fos = new FileOutputStream(path);

//指定序列化对象输出的位置和编码

serializer.setOutput(fos,"utf-8");

//写开始<?xml version=‘1.0‘ encoding=‘utf-8‘ standalone=‘yes‘ ?>

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

//<persons>

serializer.startTag(null, "persons");

for (Person person : personList) {

//开始写入

serializer.startTag(null, "person");

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

//写名字<name>

serializer.startTag(null, "name");

serializer.text(person.getName());

//</name>

serializer.endTag(null, "name");

//写年龄

//<age>

serializer.startTag(null, "age");

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

//</age>

serializer.endTag(null, "age");

//</persons>

serializer.endTag(null, "person");

}

//</persons>

serializer.endTag(null, "persons");

//结束

serializer.endDocument();

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 用于生成一个List的Person集合

* @return

*/

private List<Person> getPersonList() {

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

for (int i = 0; i < 30; i++) {

personList.add(new Person(i,"wang" + i, 18 + i));

}

return personList;

}

/**

* 解析xml文件并将xml文件中内容写List集合中

* @return

*/

private List<Person> parseXmlFromLocal() {

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();

List<Person> personList = null;

Person person = null;

String id;

while (eventType != XmlPullParser.END_DOCUMENT) {

//获取当前节点的名称

String tagName = parser.getName();

switch (eventType) {

//获得当前节点的名称 <person>

case XmlPullParser.START_TAG:

//<persons>

if("persons".equals(tagName)) {

personList = new ArrayList<Person>();

} else if ("person".equals(tagName)) { //<person id="1">

person = new Person();

id = parser.getAttributeValue(null,"id");

person.setId(Integer.valueOf(id));

} else if("name".equals(tagName)) {

person.setName(parser.nextText());

} else if("age".equals(tagName)) { //<age>

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

}

break;

//</persons>

case XmlPullParser.END_TAG:

if ("person".equals(tagName)) {

//需要把上面设置好的person对象添加到集合中

personList.add(person);

}

break;

default:

break;

}

//获得下一个事件类型

eventType = parser.next();

}

return personList;

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

}

5 设置Log过滤器

6、控制台输出结果

时间: 2024-12-10 13:10:33

02_Android写xml文件和读xml文件的相关文章

java读写文件,读超大文件

一直在处理爬虫,经常能遇到读写文件的操作,很多时候都是读写超大文件,记录如下: 一.读文件 import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException;

python文件读写 - 读一个文件所有行,加工后写另一个文件

1 #Filename: file_read_and_write.py 2 #打开文件,cNames读取所有行,储存在列表中,循环对每一行在起始处加上序号1,2,3,4 3 with open(r'file/companies.txt') as f1: 4 cNames = f1.readlines() 5 for i in range(0,len(cNames)): 6 cNames[i] = str(i+1) + '.' + '' + cNames[i] 7 8 #将处理过的cNames写入

Qt读写三种文件,QSettings读ini配置文件,QJsonDocument读JSON文件,QDomDocument读xml文件

第一种INI配置文件 .ini 文件是Initialization File的缩写,即初始化文件. 除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求.一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能.它可以用来存放软件信息,注册表信息等. 读INI文件 INI文件内容如下: [conn] ip=127.0.0.1 port=8080 databaseversion=QSQLITE databasename=st

c#程序将excel文件转换成xml文件

要程序你自己去组装去,我只写两个部分,一个是读Excel的部分,然后是写入到xml的1) 从指定的excel读出信息string strConn="provider=Microsoft.Jet.OLEDB.4.0;data source=你的Excel文件.xls;Extended Properties=Excel 8.0;";DataSet ds=new DataSet();System.Data.OleDb.OleDbConnection oleConn=new System.Da

C#操作XML(读XML,写XML,更新,删除节点,与dataset结合等)【转载】

已知有一个XML文件(bookstore.xml)如下: Corets, Eva 5.95 1.插入节点 往节点中插入一个节点: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load("bookstore.xml"); XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找

WPF程序中App.Config文件的读与写

原文:WPF程序中App.Config文件的读与写 WPF程序中的App.Config文件是我们应用程序中经常使用的一种配置文件,System.Configuration.dll文件中提供了大量的读写的配置,所以它是一种高效的程序配置方式,那么今天我就这个部分来做一次系统性的总结. App.Config文件是系统默认的应用程序配置文件,在我们使用后进行编译时会生成"程序集名称+.exe.config"文件,其本质上也是一个XML文件,在我们的应用程序中添加应用程序配置文件后,默认生成下

使用Open Xml按模版导出Excel文件(下)

(3)将数据写入Excel 把数据写入到Excel文件是本文的关键技术.这里需要用到OpenXml.在Sdk里已经提供了足够的文件操作方法,我们就调用这些方法,将数据源的数据写到文件中. 首先我们定义了一些工具类,用于读取单元格的行列值. 在Excel中,每个单元格都有一个地址:如B3表示第二行第三列的格子,在Utility中的GetRowIndex和GetColumnIndex就是输入字符串”B3”,返回Int类型的索引2 和3.还有输入“B3”,返回列的字母“B”等等. 在WorkSheet

struts 多文件上传 xml 版本

[本文简介] 本文将介绍 以配置 struts.xml  的方式 实现 多文件上传的功能. [文件夹结构] [struts.xml] 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://st

Hibernate中持久化注解的java文件在applicationContext.xml中的配置

之前用Hibernate操作数据库,都是写下.hbm.xml配置文件的.这段时间发现注解要比.hbm.xml方便很多时,决定用注解. 之前用.hbm.xml时,在applicationContext.xml里配置是: <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="da