`
zhangziyangup
  • 浏览: 1078702 次
文章分类
社区版块
存档分类
最新评论

Android开发进阶(五)--使用原始的XML文件

 
阅读更多

应用场景

在Android应用开发过程中,有时候我们自己有一些XML文件是我们自己手动创建的,而在项目开发过程中可能会用到,也就是说这用到了原始的XML资源文件。这个XML原始资源文件我们可以通过Resouce类的以下两个方法来获得:

getResouce.getXml(int id);

getRawResouce(int id)

这两个方法返回的对象是一个XmlResouceParser类的对象。而XmlResouceParser类是XmlPullParser类的子类,所以我们可以Android内置的Pull模式解析我们的XML文件,这也是本人比较喜欢的一种解析XML文件方式。因为它相对于DOM解析具有占有内存小,解析快,相对于SAX来说编写代码不那么复杂,只要编写那么一点代码就可以完成对XML文件的解析。

关于PULL模式解析XML文件,可以参看我之前写的一篇文章:

Android平台下的XML文件解析之PULL模式解析 .

http://blog.csdn.net/jiahui524/article/details/6955196

实例 :使用原始XML文件

实现效果:

实现过程:

1、在res/下新建一个xml的文件夹,在这个文件夹下新建一个person.xml文件,内容如下

<?xml version="1.0" encoding="UTF-8"?>
<persons>
	<person id="1">
		<name>张三</name>
		<age>20</age>
	</person>
	<person id="2">
		<name>李四</name>
		<age>22</age>
	</person>
</persons>


2、编写布局文件:main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <Button
        android:id="@+id/btnParser"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="解析原始XML资源文件" />
    <EditText
        android:id="@+id/edtContent"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:lines="5" />
</LinearLayout>


3、编写Activity的代码

package com.jiahui.xmlres;

import android.app.Activity;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class XmlResTestActivity extends Activity {

	private Button btnParser;
	private EditText edtContent;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		btnParser = (Button) this.findViewById(R.id.btnParser);
		edtContent = (EditText) this.findViewById(R.id.edtContent);
		
		btnParser.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				// 获取res/xml下的原生XML文件
				XmlResourceParser parser = getResources().getXml(R.xml.persons);
				try {

					StringBuilder sb = new StringBuilder();
					int eventType = parser.getEventType();
					while (eventType != XmlResourceParser.END_DOCUMENT) {

						switch (eventType) {
						case XmlResourceParser.START_TAG:

							String tagName = parser.getName();

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

								// 得到第一个属性
								String personid = parser.getAttributeValue(0);
								sb.append("ID:" + personid);

							} else if ("name".equals(parser.getName())) {
								String name = parser.nextText();
								sb.append("姓名:" + name);

							} else if ("age".equals(parser.getName())) {
								String age = parser.nextText();
								sb.append("年龄:" + age);
							}
							break;
						case XmlResourceParser.END_TAG:
							// 结束时加一个空行
							if ("person".equals(parser.getName())) {
								sb.append("\n");
							}
							break;
						default:
							break;
						}
						// 解析下一个事件
						eventType = parser.next();
					}
					// 将解析的结果放在文本编辑框
					edtContent.setText(sb.toString());

				} catch (Exception e) {
					// TODO: handle exception
				}
			}
		});
	}
}


如需转载引用请注明出处:http://blog.csdn.net/jiahui524

分享到:
评论

相关推荐

    老罗android开发视频教程全集百度网盘下载

    Android 是Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序—— 移动电话工作所需的全部软件,而且不存在任何...【第一版第十五章】老罗Android开发视频--百度地图实战开发(10集)

    深入Android应用开发 核心技术解析与最佳实践

    核心技术解析与最佳实践以Android的源代码为主,SDK为辅,针对应用开发者的需求,对各种核心技术的使用方法、底层原理和实现细节进行了深入而详细的讲解,同时辅之以大量案例和最佳实践,为开发者的进阶修炼和开发高...

    基于Java的Android应用程序开发-24点游戏源码+详细项目说明.zip

    还学习了android的一些基本组件,例如:id,控件的唯一表示符,在同一个XML文件中不可重复,相当于身份证的作用,课用来寻找并且绑定此控件;layout_width以及layout_height,分别设置view的宽高;gravity指定当文本...

    Android代码-springboot-socks

    推荐阅读本教程的三大理由: 文章内容均为原创,结合官方文档和实战经验编写。 文章结构经过细致整理,对新人学习更加友好。...SpringBoot 快速整合Mybatis(去XML化 注解进阶) SpringBoot 快速整合Mybatis(去XML

    黑马程序员安卓Android52期培训课

    2015/1/23 星期五 Android应用开发-页面跳转和数据传递 2015/1/24 星期六 Android应用开发-广播和服务 2015/1/25 星期日 2015/1/26 星期一 Android应用开发-广播和服务 2015/1/27 星期二 Android应用开发-多媒体...

    安卓移动开发课程设计/Android期末大作业-安卓端2048的小游戏+源代码+文档说明

    采用SharePreference数据存储形式,以xml文件存储最高分于手机本地。 - - 运行中有什么问题可以私聊博主,本人高级安卓工程师,主页置顶有常见爆红解决的方法,以及更多代码项目 ## 项目备注 1、该资源内项目代码都...

    Google Android SDK开发范例大全(第3版) 1/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google Android SDK开发范例大全(第3版) 4/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google Android SDK开发范例大全(第3版) 3/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google Android SDK开发范例大全(第3版) 5/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    深入Android应用开发 核心技术解析与最佳实践.z01

    核心技术解析与最佳实践以Android的源代码为主,SDK为辅,针对应用开发者的需求,对各种核心技术的使用方法、底层原理和实现细节进行了深入而详细的讲解,同时辅之以大量案例和最佳实践,为开发者的进阶修炼和开发高...

    安卓Android实现的个人移动网盘设计毕业源代码+文档说明+sql文件

    开发环境: Eclipse/Idea + Eclipse/AndroidStudio + mysql数据库 系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,MVC设计思想! 服务器和客户端数据通信格式: XML格式(用于传输查询的记录...

    详解Android之解析XML文件三种方式(DOM,PULL,SAX)

    1.xml文件代码 &lt;?xml version=1.0 encoding=UTF-8 ?&gt; &lt;&#37;@ page language=java contentType=text/xml; charset=UTF-8 pageEncoding=UTF-8%&gt; &lt;&#37;@ taglib uri=...

    android群雄传

    第2章 Android开发工具新接触 13 2.1 Android开发IDE介绍 14 2.1.1 Android Studio初体验 14 2.1.2 Android Studio配置 15 2.2 Android Studio高级使用技巧 19 2.2.1 更新SDK 20 2.2.2 Android Studio常用界面...

    安卓Android天气预报穿衣搭配APP+源代码+文档说明+数据库.zip

    开发环境: Myclipse/Eclipse/Idea都可以(服务器端) + Eclipse/AndroidStudio都可以(手机客户端) + mysql数据库 系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,MVC设计思想! 服务器和...

    安卓Android汽车票售票订票app+源代码+文档说明+数据库.zip

    开发一款基于Android的汽车售票系统,基于Android的汽车售票系统包括用户信息管理、汽车站管理、座位席别管理、订单信息管理、留言和新闻公告管理、系统管理。用户可以在本系统充值,并用于购票,购票完成后会在后台...

    安卓android高校开放式实验室管理app+源代码+文档说明+数据库.zip

    开发环境: MyEclipse/Eclipse/Idea都行(服务器端) + Eclipse/AndroidStudio都行(手机客户端) + mysql数据库 系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,MVC设计思想! 服务器和客户端...

    安卓Android装修服务app+源代码+文档说明+数据库.zip

    开发环境: Myclipse/Eclipse/Idea(服务器端) + Eclipse/AndroidStudio(手机客户端) + mysql数据库 系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,MVC设计思想! 服务器和客户端数据通信...

    安卓Android车辆运输信息管理App可升级Studio+源代码+文档说明+数据库.zip

    开发环境: Myclipse/Eclipse/Idea都可以(服务器端) + Eclipse/AndroidStudio都可以(手机客户端) + mysql数据库 系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,MVC设计思想! 服务器和...

Global site tag (gtag.js) - Google Analytics