主题:android之XmlResourceParser类使用实例 转

摘要:
XML文件名称为test.xml。˃布局文件main.xml内容如下:Xml代码˂?

http://www.iteye.com/topic/1122056

android开发过程会经常使用XML文件,下面提供小实例,看看XmlResourceParser类是怎么样解析XML文件的。

XML文件名称为test.xml。内容如下:

Xml代码 复制代码收藏代码主题:android之XmlResourceParser类使用实例 转第3张
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <customername="luopeng"age="21"gender="1"emial="dylankeepmoving@163.com"/>
  4. <customername="dylan"age="22"gender="2"emial="710097663@qq.com"/>
  5. <customername="android"age="6"gender="2"emial="android@gmail.com"/>
  6. </resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
	<customer name="luopeng"  age="21"  gender="1" emial="dylankeepmoving@163.com"/>
	<customer name="dylan"  age="22"  gender="2"  emial="710097663@qq.com"/>
	<customer name="android"  age="6"  gender="2"  emial="android@gmail.com"/>
</resources>

布局文件main.xml内容如下:

Xml代码 复制代码收藏代码主题:android之XmlResourceParser类使用实例 转第3张
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical">
  6. <TextView
  7. android:id="@+id/textview01"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="@string/hello"/>
  11. <Button
  12. android:id="@+id/btn01"
  13. android:layout_width="wrap_content"
  14. android:layout_height="wrap_content"
  15. android:text="@string/btn01"
  16. />
  17. <EditText
  18. android:id="@+id/edittext01"
  19. android:layout_width="wrap_content"
  20. android:layout_height="wrap_content"
  21. android:text="@string/eidttext01"
  22. />
  23. </LinearLayout>
<?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: 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />
    <Button 
        android: 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/btn01"
        />
    <EditText 
        android: 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/eidttext01"
        />
</LinearLayout>

如下则是具体解析XML文件的类TestXmlResourceParserActivity.java:

Java代码 复制代码收藏代码主题:android之XmlResourceParser类使用实例 转第3张
  1. packagecom.dylan.xmlresourceparser;
  2. importjava.io.IOException;
  3. importorg.xmlpull.v1.XmlPullParserException;
  4. importandroid.app.Activity;
  5. importandroid.content.res.Resources;
  6. importandroid.content.res.XmlResourceParser;
  7. importandroid.os.Bundle;
  8. importandroid.view.View;
  9. importandroid.view.View.OnClickListener;
  10. importandroid.widget.Button;
  11. importandroid.widget.EditText;
  12. /*
  13. *此类的作用是点击按钮后在EditView上显示资源文件(一个XML)中的内容
  14. *此例中会使用到XMLResourceParser
  15. */
  16. publicclassTestXmlResourceParserActivityextendsActivity{
  17. /**Calledwhentheactivityisfirstcreated.*/
  18. privateEditTextet;
  19. privateButtonmyButton;
  20. @Override
  21. publicvoidonCreate(BundlesavedInstanceState){
  22. super.onCreate(savedInstanceState);
  23. setContentView(R.layout.main);
  24. //变量在内部类中使用的前提是此变量必须是final修饰的
  25. myButton=(Button)this.findViewById(R.id.btn01);
  26. et=(EditText)this.findViewById(R.id.edittext01);
  27. myButton.setOnClickListener(newOnClickListener(){
  28. StringBuildersb=newStringBuilder("");
  29. Resourcesres=getResources();
  30. XmlResourceParserxrp=res.getXml(R.xml.test);
  31. @Override
  32. publicvoidonClick(Viewv){
  33. intcounter=0;
  34. try{
  35. //判断是否到了文件的结尾
  36. while(xrp.getEventType()!=XmlResourceParser.END_DOCUMENT){
  37. //文件的内容的起始标签开始,注意这里的起始标签是test.xml文件里面<resources>标签下面的第一个标签
  38. if(xrp.getEventType()==XmlResourceParser.START_TAG){
  39. Stringtagname=xrp.getName();
  40. if(tagname.endsWith("customer")){
  41. counter++;
  42. sb.append("这是第"+counter+"客户"+"\n");
  43. sb.append("姓名:"+xrp.getAttributeValue(0)+"\n");
  44. sb.append("年龄:"+xrp.getAttributeValue(1)+"\n");
  45. sb.append("性别:"+xrp.getAttributeValue(2)+"\n");
  46. sb.append("邮箱:"+xrp.getAttributeValue(3)+"\n\n");
  47. }
  48. }
  49. //下面的两个elseif什么作用呢?
  50. elseif(xrp.getEventType()==XmlResourceParser.END_TAG){
  51. }elseif(xrp.getEventType()==XmlResourceParser.TEXT){
  52. }
  53. xrp.next();
  54. }
  55. //程序细节注意的地方,StringBuilder要条用toString()方法,不要粗心忘记了
  56. et.setText(sb.toString());
  57. }catch(XmlPullParserExceptione){
  58. }catch(IOExceptione){
  59. e.printStackTrace();
  60. }
  61. }
  62. });
  63. }
  64. }
package com.dylan.xmlresourceparser;

import java.io.IOException;

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.EditText;

/*
 * 此类的作用是点击按钮后在EditView上显示资源文件(一个XML)中的内容
 * 此例中会使用到XMLResourceParser
 */
public class TestXmlResourceParserActivity extends Activity {
	/** Called when the activity is first created. */
	private EditText et;
	private Button myButton;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		// 变量在内部类中使用的前提是此变量必须是final修饰的
		myButton = (Button) this.findViewById(R.id.btn01);
		et = (EditText) this.findViewById(R.id.edittext01);
		myButton.setOnClickListener(new OnClickListener() {
			StringBuilder sb = new StringBuilder("");
			Resources res = getResources();
			XmlResourceParser xrp = res.getXml(R.xml.test);

			@Override
			public void onClick(View v) {
				int counter = 0;
				try {
					// 判断是否到了文件的结尾
					while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) {
						//文件的内容的起始标签开始,注意这里的起始标签是test.xml文件里面<resources>标签下面的第一个标签
						if (xrp.getEventType() == XmlResourceParser.START_TAG) {
							String tagname = xrp.getName();
							if (tagname.endsWith("customer")) {
								counter++;
								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什么作用呢?
						else if (xrp.getEventType() == XmlResourceParser.END_TAG) {
						} else if (xrp.getEventType() == XmlResourceParser.TEXT) {
						} 
						xrp.next();
					}
					//程序细节注意的地方,StringBuilder要条用toString()方法,不要粗心忘记了
					et.setText(sb.toString());
				} catch (XmlPullParserException e) {

				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		});
	}
}

运行结果如下图:

主题:android之XmlResourceParser类使用实例 转第10张

免责声明:文章转载自《主题:android之XmlResourceParser类使用实例 转》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vs 中大括号之间垂直虚线显示Prometheus完整的部署方案+实战实例下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

#Weex与Android交互(一)

用Weex开发Android程序 参考:开发HelloWorld程序(Weex开发) 1、创建Android工程 2、集成WeexSDK,参考[WEEX SDK 集成到 Android 工程](https://weex-project.io/cn/doc/advanced/integrate-to-android.html) 3、开发.we源码 4、编译....

Android开发——Android中常见的4种线程池(保证你能看懂并理解)

0.前言 转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52415337 使用线程池可以给我们带来很多好处,首先通过线程池中线程的重用,减少创建和销毁线程的性能开销。其次,能控制线程池中的并发数,否则会因为大量的线程争夺CPU资源造成阻塞。最后,线程池能够对线程进行管理,比如使用Schedu...

Android 数据库升级解决方案

请考虑如下情况: 在数据库升级时,不同版本的数据库,他们定义的表结构完全可能是不一样的,比如V1.0的表A有10个column,而在V1.1的表A有12个colum,在升级时,表A增加了两列,此时我们应该怎么做呢。 总体思路 1,将表A重命名,改了A_temp。 2,创建新表A。 3,将表A_temp的数据插入到表A。 下面代码列出了更新表的实现,upg...

【转】Android Drawable Resource学习(十一)、RotateDrawable

对另一个drawable资源,基于当前的level,进行旋转的drawable。 文件位置: res/drawable/filename.xml文件名即资源名 编译数据类型: 指向 RotateDrawable的指针。 资源引用: In Java: R.drawable.filenameIn XML: @[package:]drawable/filen...

AsyncTask

 在开发Android移动客户端的时候往往要使用多线程来进行操作,我们通常会将耗时的操作放在单独的线程执行,避免其占用主线程而给用户带来不好的用户体验。但是在子线程中无法去操作主线程(UI 线程),在子线程中操作UI线程会出现错误。因此android提供了一个类Handler来在子线程中来更新UI线程,用发消息的机制更新UI界面,呈现给用户。这样就解决了子...

Spring学习(四)Spring IOC

Spring 学习目录 Spring学习(一)Spring初识 Spring学习(二)Spring框架结构 Spring学习(三)第一个Spring程序 Spring学习(四)Spring IOC Spring学习(五)Spring 基于注解装配Bean Spring学习(六)Spring AOP Spring学习(七)Spring JdbcTempl...