`
whoyuhui
  • 浏览: 22739 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics