`
dcj3sjt126com
  • 浏览: 1872522 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android第七个功能:XmlPullParser添加内容保存为XML文件

阅读更多

核心代码五部分:

1、实体类

2、服务类

3、测试类

4、添加测试相关代码在项目配置文件中

5、运行测试,查看结果

 

package com.dcj.domain;

public class Person {
	private Integer id;
	private String name;
	private Integer age;
	
	public Integer getId() {
		return id;
	}
	public Person() {
		super();
	}
	public Person(Integer id, String name, Integer age) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
	
}

 

package com.dcj.service;

import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;

import com.dcj.domain.Person;

import android.util.Xml;

public class PersonService {
	
	/**
	 * 获取数据
	 * @param xml
	 * @return
	 * @throws Exception
	 */
	public static List<Person> getPersons(InputStream xml) throws Exception {
		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 persons 数据
	 * @param out 输出方向
	 * @throws Exception
	 */
	public static void save(List<Person> persons, OutputStream out) throws Exception {
		XmlSerializer serializer = Xml.newSerializer();
		serializer.setOutput(out, "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().toString());
			
			serializer.startTag(null, "name");
			serializer.text(person.getName());
			serializer.endTag(null, "name");
			
			serializer.startTag(null, "age");
			serializer.text(person.getAge().toString());
			serializer.endTag(null, "age");
			
			serializer.endTag(null, "person");
		}
		serializer.endTag(null, "persons");
		serializer.endDocument();
		out.flush();
		out.close();
	}
	
}

 

package com.dcj.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import com.dcj.domain.Person;
import com.dcj.service.PersonService;
import android.test.AndroidTestCase;
import android.util.Log;

public class PersonServiceTest extends AndroidTestCase {

	private static final String TAG = "PersonServiceTest";
	public void testPersons() throws Exception {
		InputStream xml =this.getClass().getClassLoader().getResourceAsStream("person.xml");
		List<Person> persons = PersonService.getPersons(xml);
		for (Person person : persons) {
			Log.i(TAG, person.toString());
		}
	}
	
	public void testSave() throws Exception {
		List<Person> persons = new ArrayList<Person>();
		persons.add(new Person(43, "zhangsan", 80));
		persons.add(new Person(12, "lili", 20));
		persons.add(new Person(78, "xiaoxiao", 8));
		// <包>/files   在当前应用所在包的files文件夹中生成文件
		File xmlFile = new File(getContext().getFilesDir(), "dcj.xml");
		FileOutputStream outStream = new FileOutputStream(xmlFile);
		PersonService.save(persons, outStream);
	}
}

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.dcj"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <uses-library android:name="android.test.runner" />
        <activity
            android:name=".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>
<instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.dcj" 
        android:label="Test for my App"/>
     
</manifest>

 执行测试方法,会在当前应用下新建一个files文件夹,然后里面有一个dcj.xml,数据如下



 

  • 大小: 12.6 KB
分享到:
评论

相关推荐

    android 读取Excel文件转成xml文件

    在Android平台上,有时候我们需要处理Excel数据,例如读取其中的内容并转换为XML文件,以便更好地在应用程序中使用或与其他系统交换数据。这个项目提供了一种方法来实现这一目标,利用了jxl.jar库来处理Excel文件,...

    android实例xml解析

    "android实例xml解析"这个主题主要涉及如何在Android应用中处理XML文件,包括读取、解析和操作XML内容。以下是对这个主题的详细阐述: 1. XML简介: XML(eXtensible Markup Language)是一种可扩展标记语言,它...

    android下对xml的基本操作

    每个布局文件包含了各种视图(如TextView、Button等)及其属性,可以使用`LayoutInflater`将XML布局转换为View对象并添加到界面上。 6. **Android资源XML**: Android项目中,如字符串、颜色、尺寸等资源通常以XML...

    android 安卓xml pull解析

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于Android开发中,用于存储配置、数据交换等。在Android系统中,XML解析主要有两种方式:DOM解析和PULL解析。本文将深入探讨Android中的XML ...

    Android应用源码之比较通用的xml解析方法.zip

    Android社区提供了一些第三方XML解析库,如PullParsers(简化Pull解析API)和TinyXML(一个小巧的C++库,可集成到Android项目中)。这些库通常具有特定优势,如更简单的API或更高的性能。 7. **Android Data ...

    安卓Android源码——比较通用的xml解析方法.zip

    在安卓(Android)开发中,XML(eXtensible Markup Language)被广泛用于存储和传输数据,例如应用程序的配置文件、布局文件等。本压缩包文件"安卓Android源码——比较通用的xml解析方法.zip"可能包含了一些关于如何...

    13pull解析xml天气信息

    在Android开发中,"13pull解析xml天气信息"是一个典型的任务,涉及到网络数据获取、XML解析以及用户界面展示等多个方面。在这个例子中,开发者通常会利用Android的Pull解析器来处理XML数据,从而获取并显示天气预报...

    Android 4.0 网络编程详解代码(共7个项目)

    7. **第7章:Android中的Socket编程** - 建立TCP或UDP连接,实现客户端和服务端的通信。 - 使用InputStream和OutputStream进行数据传输。 - 异步Socket通信,避免阻塞主线程。 - 数据的序列化和反序列化,如使用...

    XmlHealperDemo_XmlHelper_DEMO_源码

    6. **XML编写**:DEMO可能展示了创建和修改XML文档的功能,如添加、删除、更新XML节点。 7. **异常处理**:在处理XML时,可能会遇到各种错误,如格式错误、网络问题等。DEMO应该包含适当的异常处理机制,确保程序的...

    spinner三级联动,解析xml

    1. **解析XML**:使用Android的`XmlPullParser`或`SimpleXML`库解析XML文件。解析过程中,需要获取每个级别的数据,如省份、城市和县区的ID和名称,将这些数据存储到合适的数据结构中,比如ArrayList或者HashMap。 ...

    Android源码——RSS阅读器的源码.7z

    解析XML文件时,可以使用Android自带的XmlPullParser或者第三方库如TinyXML或Jsoup。解析后的数据将被存储在本地,通常采用SQLite数据库以便离线访问。 对于文件名列表中的图片文件,它们可能是RSS条目中包含的缩略...

    android源代码 Rss阅读器

    在这个"android源代码 Rss阅读器"项目中,开发者提供了一个自编写的源代码实例,旨在帮助初学者和经验丰富的开发者了解如何在Android上构建一个功能完善的RSS阅读器。 首先,我们来深入理解RSS(Really Simple ...

    安卓Android源码——WebService航班查询源码.zip

    2. **XML或JSON解析**:由于WebService通常返回XML或JSON格式的数据,源码会包含解析这些数据的部分,如使用Android自带的XmlPullParser或第三方库如Gson、Jackson来将数据转换为Java对象。 3. **异步处理**:为了...

    Android rss阅读器demo

    Android SDK提供了解析XML的内置支持,例如`XmlPullParser`。开发者也可以选择第三方库,如`TinyXML`或`PullParser`,它们提供了更简便的API来处理XML文档。 2. **网络请求**:为了获取RSS源的内容,我们需要发送...

    新浪微博相关的android源代码

    1. **Android开发**:这个项目是为Android平台设计的,Android是一个开源的操作系统,主要用于移动设备,如智能手机和平板电脑。开发者通常使用Java或Kotlin进行编程,通过Android Studio集成开发环境进行应用开发。...

    Android综合案例——RSS阅读器实源代码+讲解

    在本教程中,我们将深入探讨如何使用Android开发一个RSS阅读器应用。RSS(Really Simple Syndication)是一种数据格式,用于发布新闻、博客和其他定期更新的内容。RSS阅读器可以帮助用户订阅并集中阅读这些内容,...

    android数据跳转开发案例

    - 解析XML:使用`XmlPullParser`或`DocumentBuilderFactory`创建解析器,然后遍历XML节点提取数据。 5. **两次跳转**: - 这可能意味着案例中有两个目标Activity,A到B,然后B到C,或者可能是A到C,中间经过一个...

    Android软件RSS阅读器源代码

    在Android平台上,RSS阅读器是一种常见的应用,它允许用户订阅并获取来自各种在线新闻源、博客和其他内容提供者的更新。这个“Android软件RSS阅读器源代码”提供了开发此类应用的具体实现,是学习和理解Android应用...

    Android Rss阅读软件

    Android的`HttpURLConnection`类或者第三方库如`Volley`、`OkHttp`可以实现这一功能。注意,由于Android的网络访问限制,需要在`AndroidManifest.xml`中添加相应的权限声明。 3. **异步处理**:考虑到网络操作可能...

Global site tag (gtag.js) - Google Analytics