如果项目中使用到了一些原始的XML文件,那么,我们可以定义一些XML 文件供工程使用。XML文件定义在工程的res\xml目录下,通过Resource.getXML()方法访问。
获得原始XML文件的基本思路是,通过Resource.getXML()方法获得XML原始文件,得到XMLResourceParser对象,通过该对象来判断是文档的开始还是结尾、某个标签的开始还是结尾,并通过一些获得属性的方法来遍历XML文件,从而访问XML文件的内容。下面示例演示如何访问XML文件的内容,并将内容显示在一个TextView中。
Activity:
package com.lovo; 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; public class TestXMLActivity extends Activity { private Button myButton; private TextView myTextView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 设置当前Activity的内容布局视图 setContentView(R.layout.main); // 通过findViewById方法获得Button实例 myButton = (Button) findViewById(R.id.btn); // 通过findViewById方法获得TextView实例 myTextView = (TextView) findViewById(R.id.xmlTextView); // 设置单击事件的监听器 myButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { int counter = 0;// 定义计数器 StringBuilder sb = new StringBuilder("");// 实例化StringBuilder 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(); // 判断标签名称是否等于customer if (name.equals("customer")) { 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() == XmlResourceParser.END_TAG) { } else if (xrp.getEventType() == XmlResourceParser.TEXT) { } // 下一个标签 xrp.next(); } // 将StringBuilder设置为TextView的文本 myTextView.setText(sb.toString()); } catch (Exception e) { e.printStackTrace(); } } }); } }
布局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" > <TextView android:id="@+id/xmlTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" /> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="获取XML内容" /> </LinearLayout>
原始XML:
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- 子元素及属性名称任意 --> <customer name="tom" age="20" email="tom@yahoo.com" gender="male" /> <customer name="kite" age="21" email="kite@yahoo.com" gender="male" /> </resources>