`

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

    Android读写XML

    Android读写XML,SAX等方式

    Android读写XML.docx

    XML 经常用作 Internet 上的一种数据格式,其文件格式想必大家都比较清楚,在这里我结合Android平台,来说明Android SDK提供的读写XML的package。 首先介绍下Android SDK与Java SDK在读写XML文件方面,数据包之间的...

    Android读写XML.doc

    XML 经常用作 Internet 上的一种数据格式,其文件格式想必大家都比较清楚,在这里我结合Android平台,来说明Android SDK提供的读写XML的package。

    android读写xml文件

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

    Android对xml进行三种操作实例

    Android对xml进行三种操作实例

    android下解析xml文件的demo

    android下解析xml文件的demo

    Android与XML

    Android与XML • Android读写XML(上)——package说明 • Android读写XML(中)——SAX • Android读写XML(下)——创建XML文档

    Android解析XML文件

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

    Android与XML编写菜单的例子.rar

    Android与XML编写菜单的例子,Java操作XML文件,实现Android菜单,XML在android中的编程相当普遍了,这个比较基础的例子了,期待对你研究学习andrid有帮助。

    Android高手进阶教程与Android基础教程

    Android读写XML(上)——package说明.doc Android读写XML(下)——创建XML文档.doc Android读写XML(中)——SAX.doc Android高手进阶教程之----Android Handler的使用!!! .doc Android高手进阶教程之----Android ...

    此代码用于对android中XML类型的数据进行完整的解析

    本代码能够将Android中XML类型的数据进行完整的解析,包含XML的各种情况

    android编程之xml文件读取和写入方法

    本文实例讲述了android编程之xml文件读取和写入方法。分享给大家供大家参考。具体分析如下: 一、环境: 主机:WIN8 开发环境:Eclipse 二、说明: 1.打开sd卡中的xml文件,如果不存在,这新建一个,并写入默认配置 2....

    android Dom解析xml文件

    包括android代码实例以及个人对Dom解析xml文件的总结文档。

    android 对外解析XML

    这个主要讲解了android 对XML的解析过程分析

    android xml解析1

    事件处理器是org.xml.sax包中ContentHander、DTDHander、ErrorHandler,以及EntityResolver这4个接口.ContentHander用于处理跟XML文档相关的事件,DTDHander用于处理对文档的DTD进行解析时产生的事件,ErrorHandler...

    Android 对 strings.xml 的字符串进行格式化

    Android 对 strings.xml 的字符串进行格式化

Global site tag (gtag.js) - Google Analytics