Android杂谈---读取XML资源
来源:互联网 发布:邮件 rss源码 编辑:程序博客网 时间:2024/05/21 10:47
获取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();
- }
- }
- });
- }
- }
/* * @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() {@Overridepublic 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>
<?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" ><Buttonandroid: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>
<?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>
- Android杂谈---读取XML资源
- Android读取XML资源
- Android 读取xml资源
- Android读取XML资源
- Android 资源杂谈
- Android Studio 图片资源引用杂谈
- Android读取资源文件——读取原始Xml内容和使用Menu文件
- Android 读取资源文件
- android 读取资源文件
- Android:读取assets资源
- Android 读取资源文件
- Android读取资源文件
- android 读取资源文件
- android 资源读取
- Android assets资源读取
- android xml资源文件
- android颜色xml资源
- Android---原始XML资源
- 平方根法和改进的平方根法解线性方程组(Matlab程序)
- 创建DML触发器
- 列主元Gauss消去法解线性方程组(C语言)
- Linux下使用Tomcat7搭建高性能Java服务器
- 第三节:Quartz 执行过程
- Android杂谈---读取XML资源
- 三对角阵的LU分解和三对角方程组的求解(C语言)
- 计算当前sql语句执行速度
- C++简易模仿C#Delegate机制
- 消息到达提醒功能
- 求解三对角方程组的追赶法(Matlab程序)
- Jacobi迭代法解线性方程组(C语言)
- 九九乘方表
- C语言时间处理函数strftime