随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)
如果项目中使用到了一些原始的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>