android开发过程会经常使用XML文件,下面提供小实例,看看XmlResourceParser类是怎么样解析XML文件的。
XML文件名称为test.xml。内容如下:
- <?xmlversion="1.0"encoding="utf-8"?>
- <resources>
- customername="luopeng"age="21"gender="1"emial="dylankeepmoving@163.com"/>
- customername="dylan"age="22"gender="2"emial="710097663@qq.com"customername="android"age="6"gender="2"emial="android@gmail.com"</>
布局文件main.xml内容如下:
LinearLayoutxmlns: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/textview01"
android:layout_height="wrap_content"
android:text="@string/hello"Button
android:id="@+id/btn01"
android:layout_width="wrap_content"
android:text="@string/btn01"
EditText
android:id="@+id/edittext01"
android:text="@string/eidttext01"
LinearLayout>
如下则是具体解析XML文件的类TestXmlResourceParserActivity.java:
packagecom.dylan.xmlresourceparser;
- importjava.io.IOException;
- importorg.xmlpull.v1.XmlPullParserException;
- importandroid.app.Activity;
- importandroid.content.res.Resources;
- importandroid.content.res.XmlResourceParser;
- importandroid.os.Bundle;
- importandroid.view.View;
- importandroid.view.View.OnClickListener;
- importandroid.widget.Button;
- importandroid.widget.EditText;
-
- *此类的作用是点击按钮后在EditView上显示资源文件(一个XML)中的内容
- *此例中会使用到XMLResourceParser
- */
- publicclassTestXmlResourceParserActivityextendsActivity{
- /**Calledwhentheactivityisfirstcreated.*/
- privateEditTextet;
- privateButtonmyButton;
- @Override
- voidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //变量在内部类中使用的前提是此变量必须是final修饰的
- myButton=(Button)this.findViewById(R.id.btn01);
- et=(EditText)this.findViewById(R.id.edittext01);
- myButton.setOnClickListener(newOnClickListener(){
- StringBuildersb=newStringBuilder("");
- Resourcesres=getResources();
- XmlResourceParserxrp=res.getXml(R.xml.test);
- voidonClick(Viewv){
- intcounter=0;
- try{
- //判断是否到了文件的结尾
- while(xrp.getEventType()!=XmlResourceParser.END_DOCUMENT){
- //文件的内容的起始标签开始,注意这里的起始标签是test.xml文件里面<resources>标签下面的第一个标签
- if(xrp.getEventType()==XmlResourceParser.START_TAG){
- Stringtagname=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)+"nn");
- }
- //下面的两个elseif什么作用呢?
- elseif(xrp.getEventType()==XmlResourceParser.END_TAG){
- }if(xrp.getEventType()==XmlResourceParser.TEXT){
- xrp.next();
- //程序细节注意的地方,StringBuilder要条用toString()方法,不要粗心忘记了
- et.setText(sb.toString());
- catch(XmlPullParserExceptione){
- catch(IOExceptione){
- e.printStackTrace();
- });
- }
运行结果如下图:
转载自:http://www.iteye.com/topic/1122056 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|