`

android读写XML

阅读更多
详细代码看附件!

布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:padding="@dimen/padding_medium"
        android:text="@string/hello_world"
        tools:context=".MainActivity" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_centerHorizontal="true"
        android:text="@string/button1" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button1"
        android:layout_below="@+id/button1"
        android:text="@string/button2" />

</RelativeLayout>



适配文件:

dimens.xml:
<resources>

    <dimen name="padding_small">8dp</dimen>
    <dimen name="padding_medium">8dp</dimen>
    <dimen name="padding_large">16dp</dimen>

</resources>

strings.xml:
<resources>

    <string name="app_name">ReadWriteXML</string>
    <string name="button1">读取</string>
    <string name="button2">写入</string>
    <string name="hello_world">Hello world!</string>
    <string name="menu_settings">Settings</string>
    <string name="title_activity_main">xml读写</string>
</resources>


Person类:
package com.app.bean;

public class Person {
	private Integer id;
	private String name;
	private Integer age;
	public Integer getId() {
		return id;
	}
	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 + "]";
	}
	public Person(Integer id, String name, Integer age) {		
		this.id = id;
		this.name = name;
		this.age = age;
	}	
	public Person() {	
		
	}	
}



MainActivity:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.app.bean.Person;
import com.app.readwritexmliii.R;
import com.app.service.PersonService;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		Button btn1 = null;
    	Button btn2 = null;
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		 btn1 = (Button)findViewById(R.id.button1);
	     btn1.setOnClickListener(new Btn1Click()); 
	     btn2 = (Button)findViewById(R.id.button2);
	     btn2.setOnClickListener(new Btn2Click());
	}

	private final class Btn1Click implements View.OnClickListener {
    	public void onClick(View v) {
    		List<Person> persons;
			try {
				InputStream inputStream = new FileInputStream(new File(getApplicationContext().getFilesDir(), "person.xml"));
				persons = PersonService.getPersons(inputStream);
				for (Person person : persons){
	    			Toast.makeText(getApplicationContext(), person.toString(), Toast.LENGTH_SHORT).show();
	    		}
			} catch (Exception e) {
				e.printStackTrace();
			}    			
		}
    }
	
	private final class Btn2Click implements View.OnClickListener {

		public void onClick(View v) {
			List<Person> persons = new ArrayList<Person>();
			persons.add(new Person(44,"fuchangle",27));
			persons.add(new Person(55, "zhangyanfeng", 27));
			persons.add(new Person(66, "xuliang", 25));
			
			try {
				File xmlFile = new File(getApplicationContext().getFilesDir(), "person.xml");
				System.out.println(xmlFile.getPath());
				FileOutputStream outStream = new FileOutputStream(xmlFile);
				PersonService.save(persons, outStream);
				Toast.makeText(getApplicationContext(), "写入" + persons.toString(), Toast.LENGTH_LONG).show();
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
    	
    }
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}

}


PersonService.java
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 android.util.Xml;

import com.app.bean.Person;

public class PersonService {
	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 = Integer.valueOf(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 = Integer.valueOf(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();
		try {
			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().toString());
				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();
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			out.flush();
			out.close();
		}
	}
}

分享到:
评论

相关推荐

    android读写xml文件

    android中读写xml文件简单demo,可以通过此代码来简单的读取xml配置文件

    Android读写XML.doc

    Android SDK提供了丰富的API来支持XML的读写,这些API主要来自于Java SDK,同时也有一些特定于Android的实现。下面我们将详细讨论Android中XML读写的包和方法。 1. **包功能介绍** - `javax.xml`:包含XML规范定义...

    Android读写XML

    Android读写XML,SAX等方式

    android 读写xml

    2. javax.xml.parsers.DocumentBuilderFactory:用于创建DOM解析器,通过Document对象对XML进行操作。 三、XML读取步骤 1. 创建解析器:根据需求选择合适的解析器,如使用XmlPullParserFactory获取XmlPullParser...

    Android读写XML.docx

    这种方式的优点是操作灵活,但缺点是对内存和CPU资源消耗较大,适合于小型XML文档和资源充足的环境。 2. **SAX (Simple API for XML)**:SAX是一种基于事件驱动的解析器,它在解析XML文档时触发特定事件,例如元素...

    Android对xml进行三种操作实例

    本实例将探讨在Android中对XML进行读取、写入和解析的三种基本操作。 一、XML的读取 在Android中,我们通常使用`XmlPullParser` API来解析XML文件。`XmlPullParser`提供了事件驱动的解析方式,通过一系列的next()...

    android下解析xml文件的demo

    首先,XML(eXtensible Markup Language)是一种自定义标记语言,它的结构清晰,易于读写,适合于数据交换和存储。在Android应用中,我们通常使用两种方式来解析XML:DOM(Document Object Model)解析器和SAX...

    Android开发 XML 语法规则

    Android 开发 XML 语法规则 Android 开发中,XML 语法规则非常重要,以下是 XML 语法规则的详细介绍: 1.所有 XML 元素都须有关闭标签 在 XML 中,所有元素都必须有关闭标签,否则将会出现错误。这与 HTML 不同...

    android的xml操作

    `SharedPreferences`类提供了方便的接口,用于读写这些XML文件中的键值对。 总结,XML在Android开发中扮演着至关重要的角色,无论是在界面设计、数据存储还是偏好设置等方面都有广泛的应用。理解并熟练掌握XML的...

    Android解析XML文件

    本例使用多种方式获取本地XML文件,还有通过url获取XML文件,使用Android内置的PULL解析器对XML文件进行解析,例子是解析我国各个省市。 《Android解析XML文件》博文路径:...

    Android中XML数据解析

    在Android开发中,XML(eXtensible Markup Language)是一种常用的数据存储和交换格式,尤其在应用程序的配置、布局和网络通信中发挥着重要作用。XML的结构清晰,易于人类阅读和机器解析,使得它成为Android平台上的...

    Android中xml转json

    在Android开发中,XML(可扩展标记语言)和JSON(JavaScript Object Notation)都是常见的数据交换格式。XML因其结构化特性适用于复杂的文档存储,而JSON则以其轻量级、易于阅读和编写的特点广泛用于Web服务的数据...

    Android 解析xml文件

    在Android开发中,XML文件常用于存储数据、配置或布局信息。XML(eXtensible Markup Language)是一种结构化标记语言,易于阅读和编写,同时机器也能方便地解析和生成。本篇将深入探讨Android中解析XML文件的方法,...

    Android xml转义字符

    ### Android XML转义字符 在Android开发过程中,经常会遇到需要在`res/values/strings.xml`文件中使用特殊字符的情况。由于XML是一种标记语言,它对某些字符有特定的规定,如果直接将这些特殊字符写入XML文件,则...

    android 自定义xml存储方式以及存储位置

    4. 安全性:如果存储敏感信息,如用户密码,应该对XML数据进行加密。 5. 性能优化:避免频繁读写大文件,尽量减少IO操作,使用缓存提高性能。 以下是一个简单的XML保存示例代码: ```java File file = new File...

    android下XML解析源码

    DOM解析的优点是提供了一个整体视图,可以任意位置遍历和修改XML文档,但缺点是占用内存大,对大型XML文件不友好。 在Android中,DOM解析可以通过`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom....

    android 读取Excel文件转成xml文件

    - Android系统内置了对XML的支持,可以使用java.util DOM或SAX解析器,或者使用Android的XmlPullParser接口来生成XML。最常用的是DOM,因为它允许以树形结构处理XML文档,便于操作。 5. **字符资源与XML文件**: ...

    Android 解析xml实现类似网易客户端源码

    这个过程涉及到了XML解析、事件处理、数据模型构建以及UI展示等多个环节,需要对Android开发有深入的理解。在实际项目中,可能还需要根据具体需求进行优化和调整,比如添加错误处理、网络请求等功能。

Global site tag (gtag.js) - Google Analytics