獲取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() {
@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>
<?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="[email protected]"/>
- <friend name="nimo" age="21" gender="female" email="[email protected]"/>
- </resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<friend name="hualang" age="22" gender="male" email="[email protected]"/>
<friend name="nimo" age="21" gender="female" email="[email protected]"/>
</resources>
運行結果
注意:如果沒有加入import org.hualang.readxml.R;這句話,點擊按鈕後沒有反應,原因不知道
加入import org.hualang.readxml.R;後,運行結果如下