`

Android杂谈---读取XML资源

阅读更多

获取XML文件的基本思路是,通过getResources().getXml()获的XML原始文件,得到XmlResourceParser对象,通过该对象来判断是文档的开头还是结尾,是某个标签的开始还是结尾,并通过一些获取属性的方法来遍历XML文件,从而访问XML文件的内容,下面是一个访问XML文件内容的例子,并将内容更显示在一个TextView上

 

ReadXMLTest.java

/*
 * @author hualang
 */
package org.hualang.readxml;

import java.io.IOException;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.app.Activity;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import org.hualang.readxml.R;

public class ReadXMLTest extends Activity {
	private TextView myTextView;
	private Button myButton;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       
       myTextView = (TextView)findViewById(R.id.text);
       myButton = (Button)findViewById(R.id.button);
       //设置按钮监听器
       myButton.setOnClickListener(new OnClickListener() {
		@Override
		public void onClick(View v) {
			//设置定时器
			   int counter = 0;
			   //实例化StringBuilder
		       StringBuilder sb = new StringBuilder("");
		       //得到Resources资源
		       Resources r = getResources();
		       //通过Resources,获得XmlResourceParser实例
	    	   XmlResourceParser xrp = r.getXml(R.xml.test);
		       try {
		    	   //如果没有到文件尾继续执行
				while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) { 
					//如果是开始标签
					     if (xrp.getEventType() == XmlResourceParser.START_TAG) {
					    	 //获取标签名称
					          String name = xrp.getName();
					          //判断标签名称是否等于friend
					          if(name.equals("friend")){
					        	  counter++;
					        	  //获得标签属性追加到StringBuilder中
					        	  sb.append("第"+counter+"个朋友的信息:"+"\n");
					        	  sb.append(xrp.getAttributeValue(0)+"\n");
					        	  sb.append(xrp.getAttributeValue(1)+"\n");
					        	  sb.append(xrp.getAttributeValue(2)+"\n");
					        	  sb.append(xrp.getAttributeValue(3)+"\n\n");
					          }
					     } else if (xrp.getEventType() == XmlPullParser.END_TAG) { 
					     } else if (xrp.getEventType() == XmlPullParser.TEXT) { 
					     } 
					     //下一个标签
					     xrp.next(); 
					}
				myTextView.setText(sb.toString());
			} catch (XmlPullParserException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	});
    }
}

 

 

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<Button
	android:id="@+id/button"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:text="读取XML文件内容"
/>
<TextView  
	android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:text=""
    />
</LinearLayout>

 

res/xml目录下的test.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<friend name="hualang" age="22" gender="male" email="hualang@yahoo.com"/>
	<friend name="nimo" age="21" gender="female" email="1234567@qq.com"/>
</resources>

 

运行结果

注意:如果没有加入import org.hualang.readxml.R;这句话,点击按钮后没有反应,原因不知道


加入import org.hualang.readxml.R;后,运行结果如下
 

 

  • 大小: 10 KB
  • 大小: 13.4 KB
分享到:
评论

相关推荐

    Android杂谈---Nexus S的ROOT教程

    这篇“Android杂谈---Nexus S的ROOT教程”显然是针对想要获取Nexus S手机ROOT权限的用户,提供了一条详细的操作路径。Nexus S是由Google与三星联合推出的旗舰设备,因其开源特性而深受开发者喜爱。 首先,我们需要...

    Android杂谈--闹钟详谈

    在Android系统中,闹钟(Alarm)是一种非常重要的功能,它允许应用在特定的时间执行一些操作,如唤醒设备、发送通知或执行后台任务。本文将深入探讨Android中的闹钟实现,涉及源码分析以及如何使用相关工具进行调试...

    计算机汇编杂谈-理解原理

    计算机汇编杂谈-理解其中的原理

    杂谈----1 显示横向滚动条

    标题中的“杂谈----1 显示横向滚动条”暗示了我们将会探讨的是关于在界面设计中如何实现或处理横向滚动条的技术问题。这通常涉及到前端开发,特别是网页或应用程序的用户界面(UI)部分,其中可能包括HTML、CSS和...

    项目管理故事2-实施策略杂谈-开元项目实施.ppt

    "项目管理故事2-实施策略杂谈-开元项目实施" 本文是基于赵磊项目经理的项目管理故事,分享实施成功经验。赵磊担任过多个项目经理职位,负责开元旅业NC项目财务实施、苏州好孩子NC财务项目实施、合肥公交NC财务第一...

    swing开发杂谈--初版本程序源码

    在"swing开发杂谈--初版本程序源码"中,可能包含了上述部分或全部知识点的实际应用,通过分析`netHelper`这个子文件夹,我们可以看到可能的网络辅助类或其他功能模块的实现。这个源码可能会演示如何使用Swing构建一...

    「安全管理」Linux_HIDS杂谈 - WEB应用防火墙.zip

    「安全管理」Linux_HIDS杂谈 - WEB应用防火墙 安全管理 安全资讯 安全开发 零信任 身份管理

    软件工程历史杂谈-杨东屏

    - **云计算与大数据**:云计算提供了强大的计算资源和支持,大数据则带来了海量数据处理的需求,两者都对软件工程提出了新的挑战。 - **敏捷开发**:敏捷开发强调迭代和增量式的软件开发方法,以适应不断变化的市场...

    程序设计经验杂谈-给予帮助

    在实际应用中,理解时间复杂度和空间复杂度的概念,能帮助你在性能和资源消耗之间找到平衡。 再者,代码可读性和维护性不应被忽视。良好的编程风格,包括合理的命名、注释、代码格式化,可以提升代码的可读性,使...

    嵌入式开发杂谈-薛立功经典之作

    ### 嵌入式开发杂谈—薛立功经典之作:关键知识点解析 #### 一、引言 在嵌入式开发领域,《嵌入式开发杂谈》是薛立功先生的经典著作之一,该作品旨在解答新手在入门阶段遇到的各种问题。通过作者的经验分享,帮助...

    (免费)杂谈-我眼中的FPGA与DSP.docx

    在嵌入式开发领域,FPGA(Field Programmable Gate Array)和...选择FPGA还是DSP,主要取决于具体项目的需求、开发经验和资源限制。学习和掌握两者都有助于提升嵌入式开发的专业技能,为应对多样化的工程挑战做好准备。

    (免费)杂谈-我眼中的FPGA与DSP.pdf

    在嵌入式开发领域,FPGA(Field Programmable Gate Array)和DSP(Digital Signal Processor)是两种非常重要的处理器,它们各自具有独特的特性和优势。FPGA是一种可编程的硬件平台,能够根据用户的需求配置出不同的...

    java杂谈-一个计算机专业学生几年的编程经验汇总谈.pdf

    【Java动态加载机制】 Java的动态加载机制是其设计的一大亮点,它允许程序在运行时按需加载类,而不是一次性加载所有类。这种机制降低了内存消耗,并提高了程序的灵活性。当我们编写Java程序并运行时,只有当我们...

    java杂谈-一个计算机专业学生几年的编程经验汇总谈实用.pdf

    在本文中,作者分享了作为一名计算机专业学生的编程经验,主要关注Java语言。文章分为三个部分,分别讨论了Java的动态加载机制、查找class文件的原理以及JDK和JRE的区别。 1. 动态加载机制: Java的动态加载机制...

    作业指导书编制规范,作业指导书编制的各部分内容要点 - 仓库管理杂谈 - 库管易.docx

    作业指导书是组织内部标准化操作的重要工具,尤其在仓库管理中,它对于规范流程、提升效率和确保质量具有关键作用。本文将详细阐述作业指导书的编制规范,以帮助理解和实施有效的作业指导书管理。...

Global site tag (gtag.js) - Google Analytics