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

ReadXMLTest.java

  1. /*
  2. * @author hualang
  3. */
  4. package org.hualang.readxml;
  5. import java.io.IOException;
  6. import org.xmlpull.v1.XmlPullParser;
  7. import org.xmlpull.v1.XmlPullParserException;
  8. import android.app.Activity;
  9. import android.content.res.Resources;
  10. import android.content.res.XmlResourceParser;
  11. import android.os.Bundle;
  12. import android.view.View;
  13. import android.view.View.OnClickListener;
  14. import android.widget.Button;
  15. import android.widget.TextView;
  16. import org.hualang.readxml.R;
  17. public class ReadXMLTest extends Activity {
  18. private TextView myTextView;
  19. private Button myButton;
  20. @Override
  21. public void onCreate(Bundle savedInstanceState) {
  22. super.onCreate(savedInstanceState);
  23. setContentView(R.layout.main);
  24. myTextView = (TextView)findViewById(R.id.text);
  25. myButton = (Button)findViewById(R.id.button);
  26. //设置按钮监听器
  27. myButton.setOnClickListener(new OnClickListener() {
  28. @Override
  29. public void onClick(View v) {
  30. //设置定时器
  31. int counter = 0;
  32. //实例化StringBuilder
  33. StringBuilder sb = new StringBuilder("");
  34. //得到Resources资源
  35. Resources r = getResources();
  36. //通过Resources,获得XmlResourceParser实例
  37. XmlResourceParser xrp = r.getXml(R.xml.test);
  38. try {
  39. //如果没有到文件尾继续执行
  40. while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) {
  41. //如果是开始标签
  42. if (xrp.getEventType() == XmlResourceParser.START_TAG) {
  43. //获取标签名称
  44. String name = xrp.getName();
  45. //判断标签名称是否等于friend
  46. if(name.equals("friend")){
  47. counter++;
  48. //获得标签属性追加到StringBuilder中
  49. sb.append("第"+counter+"个朋友的信息:"+"\n");
  50. sb.append(xrp.getAttributeValue(0)+"\n");
  51. sb.append(xrp.getAttributeValue(1)+"\n");
  52. sb.append(xrp.getAttributeValue(2)+"\n");
  53. sb.append(xrp.getAttributeValue(3)+"\n\n");
  54. }
  55. } else if (xrp.getEventType() == XmlPullParser.END_TAG) {
  56. } else if (xrp.getEventType() == XmlPullParser.TEXT) {
  57. }
  58. //下一个标签
  59. xrp.next();
  60. }
  61. myTextView.setText(sb.toString());
  62. } catch (XmlPullParserException e) {
  63. e.printStackTrace();
  64. } catch (IOException e) {
  65. e.printStackTrace();
  66. }
  67. }
  68. });
  69. }
  70. }
  1. /*
  2. * @author hualang
  3. */
  4. package org.hualang.readxml;
  5. import java.io.IOException;
  6. import org.xmlpull.v1.XmlPullParser;
  7. import org.xmlpull.v1.XmlPullParserException;
  8. import android.app.Activity;
  9. import android.content.res.Resources;
  10. import android.content.res.XmlResourceParser;
  11. import android.os.Bundle;
  12. import android.view.View;
  13. import android.view.View.OnClickListener;
  14. import android.widget.Button;
  15. import android.widget.TextView;
  16. import org.hualang.readxml.R;
  17. public class ReadXMLTest extends Activity {
  18. private TextView myTextView;
  19. private Button myButton;
  20. @Override
  21. public void onCreate(Bundle savedInstanceState) {
  22. super.onCreate(savedInstanceState);
  23. setContentView(R.layout.main);
  24. myTextView = (TextView)findViewById(R.id.text);
  25. myButton = (Button)findViewById(R.id.button);
  26. //设置按钮监听器
  27. myButton.setOnClickListener(new OnClickListener() {
  28. @Override
  29. public void onClick(View v) {
  30. //设置定时器
  31. int counter = 0;
  32. //实例化StringBuilder
  33. StringBuilder sb = new StringBuilder("");
  34. //得到Resources资源
  35. Resources r = getResources();
  36. //通过Resources,获得XmlResourceParser实例
  37. XmlResourceParser xrp = r.getXml(R.xml.test);
  38. try {
  39. //如果没有到文件尾继续执行
  40. while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) {
  41. //如果是开始标签
  42. if (xrp.getEventType() == XmlResourceParser.START_TAG) {
  43. //获取标签名称
  44. String name = xrp.getName();
  45. //判断标签名称是否等于friend
  46. if(name.equals("friend")){
  47. counter++;
  48. //获得标签属性追加到StringBuilder中
  49. sb.append("第"+counter+"个朋友的信息:"+"\n");
  50. sb.append(xrp.getAttributeValue(0)+"\n");
  51. sb.append(xrp.getAttributeValue(1)+"\n");
  52. sb.append(xrp.getAttributeValue(2)+"\n");
  53. sb.append(xrp.getAttributeValue(3)+"\n\n");
  54. }
  55. } else if (xrp.getEventType() == XmlPullParser.END_TAG) {
  56. } else if (xrp.getEventType() == XmlPullParser.TEXT) {
  57. }
  58. //下一个标签
  59. xrp.next();
  60. }
  61. myTextView.setText(sb.toString());
  62. } catch (XmlPullParserException e) {
  63. e.printStackTrace();
  64. } catch (IOException e) {
  65. e.printStackTrace();
  66. }
  67. }
  68. });
  69. }
  70. }

main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <Button
  8. android:id="@+id/button"
  9. android:layout_width="fill_parent"
  10. android:layout_height="wrap_content"
  11. android:text="读取XML文件内容"
  12. />
  13. <TextView
  14. android:id="@+id/text"
  15. android:layout_width="wrap_content"
  16. android:layout_height="wrap_content"
  17. android:text=""
  18. />
  19. </LinearLayout>
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <Button
  8. android:id="@+id/button"
  9. android:layout_width="fill_parent"
  10. android:layout_height="wrap_content"
  11. android:text="读取XML文件内容"
  12. />
  13. <TextView
  14. android:id="@+id/text"
  15. android:layout_width="wrap_content"
  16. android:layout_height="wrap_content"
  17. android:text=""
  18. />
  19. </LinearLayout>

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

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

运行结果

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

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

http://blog.csdn.net/freestyleboy21/article/details/7008228

getResources().getXml()获取xml的更多相关文章

  1. iOS 通过URL网络获取XML数据的两种方式

    转载于:http://blog.csdn.net/crayondeng/article/details/8738768 下面简单介绍如何通过url获取xml的两种方式. 第一种方式相对简单,使用NSD ...

  2. Android开发之获取xml文件的输入流对象

    介绍两种Android开发中获取xml文件的输入流对象 第一种:通过assets目录获取 1.首先是在Project下app/src/main目录下创建一个assets文件夹,将需要获取的xml文件放 ...

  3. php通过curl发送XML数据,并获取XML数据

    php编程中经常会用到用xml格式传送数据,如调用微信等第三方接口经常用到,这里演示下php以curl形式发送xml,并通过服务器接收 一.发送xml数据 -- postXml.php <?ph ...

  4. 递归获取XML元素

    看到的一道题,用递归获取XML元素.... static void Main(string[] args) { string xmlContent = @"<FileSystem> ...

  5. 获取XML数据

    http://www.w3school.com.cn/xml/xml_elements.asp <?xml version="1.0" encoding="gb23 ...

  6. js解析xml,获取XMl标签属性值

    <script type="text/javascript"> var xml="<?xml version=\"1.0\" enc ...

  7. 使用GridView来获取xml文件数据

    在任何一个系统中,数据的读取和编辑都是至关重要的.无论你是CS还是BS,都需要对数据进行操作.其实 我们可以发现,很多软件和系统最终都是对于数据库中数据的处理.之前在CS的学习过程中我们接触到了很多 ...

  8. wemall app商城源码Android 获取XML网络数据并绑定到ListView

    wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享Android 获取XML网络数据并绑定到Li ...

  9. 使用PHP生成和获取XML格式数据

    1.php生成xml

随机推荐

  1. ISO7816标准IO通讯方面的需求

    以下需求适用于符合ISO7816的Reader的测试:换句话说只要Reader能通过以下指令,就基本符合了ISO7816标准,具体需求为: 1 概述 本文档主要描述CDCAS系统中用到的CA证书的格式 ...

  2. C51的模块化设计方法

    一个大的单片机程序往往包含很多模块,我是这样组织的: 1.每一个C源文件都要建立一个与之名字一样的H文件(头文件),里面仅仅包括该C文件的函数的声明,其他的什么也不会有,比如变量的定义啊等等不应该有. ...

  3. BZOJ1662: [Usaco2006 Nov]Round Numbers

    1662: [Usaco2006 Nov]Round Numbers Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 147  Solved: 84[Sub ...

  4. Decimal

    Description 任意一个分数都是有理数,对于任意一个有限小数,我们都可以表示成一个无限循环小数的形式(在其末尾添加0),对于任意一个无限循环小数都可以转化成一个分数.现在你的任务就是将任意一个 ...

  5. wex5添加视频播放

    我使用的播放器是ckplayer http://www.ckplayer.com/ ckplayer存放路,项目路径下: 方法一: 在monitor.w里加一个div标签 <div id=&qu ...

  6. 如何判断Linux load的值是否过高

    1.先使用top看下CPU占用高的进程,找出进程的进程ID(pid): 查看方法:top 2.根据进程ID(pid)查看是进程的那些线程占用CPU高. 查看方法:top -Hp pid 3.使用pst ...

  7. ORA-01652:无法通过128(在表空间TEMP中)扩展temp段

    在Oracle数据库中进行order by or group by.索引的创建和重创建.distinct操作.union & intersect & minus sort-merge ...

  8. 第一次用IIS发布网站时遇到的两个问题

    1.  配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息并适当地修改配置文件. 分析器错误消息: 无法识别的属性“targetFramework”.请注意属性 ...

  9. 今天上传公司服务器出现的.net framework版本错误问题

    今天做好一个网站(.net4.0),里面有静态页面也有aspx页面,发布后,满心欢喜的上传到服务器,运行后,静态页没有问题,可是通过导航栏一旦点击进入aspx页面,就会出现错误 ,提示web.conf ...

  10. c#读写cookie

    读 response.SetCokie(new HttpCookie("Color",TextBox1.Text);写 request.Cookies["color&qu ...