Android中解析XML总结

前言:

1>示例XML文件内容

对示例所演示的是如何解析一个XML文件,对于我们要解析的XML文件,其已经放入本应用的文件夹下了;

对于我们要解析的XML文件,其内容如下:



2>认识XmlPullParser

I>解析器的当前事件状态可以通过调用getEventType()方法来知道;

在最开始的时候,解析器是处于START_DOCUMENT的事件状态之中的;

II>

next()方法将会让解析器进入到下一个事件当中,然后其int类型的返回值表明了

解析器当前已处于哪个事件状态之中;

III>

以下事件类型,可以通过next()方法得到:

START_TAG
表明此刻一个XML的开始标签被读取

TEXT
表明此刻一个文本内容被读取,这个文本内容可以通过getText()方法获取到;
END_TAG
一个结束标签被读取
END_DOCUMENT
表明XML文件解析结束


代码示例如下:

MainActivity:

package com.example.administrator.testparsexml;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.util.Xml;
import android.view.View;

import org.xmlpull.v1.XmlPullParser;

import java.io.File;
import java.io.FileReader;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    /***
     * 现在在本应用的文件夹有一个XML文件下,
     * 那么下面,我们来对其进行解析操作;
     * **/
    public void parseXML(View view){

        XmlPullParser xmlPullParser = Xml.newPullParser();
        try {
            /***
             * 指明需要解析的XML文件的位置
             * **/
            xmlPullParser.setInput(new FileReader(new File(getFilesDir(),"test.xml")));
            /***
             * 如果没有解析到XML文件的结尾,则继续解析
             * ***/
            while (xmlPullParser.getEventType() != XmlPullParser.END_DOCUMENT){
                if(xmlPullParser.getEventType() == XmlPullParser.START_DOCUMENT){
                    Log.e("parseXML","开始解析");
                }else if(xmlPullParser.getEventType() == XmlPullParser.START_TAG){
                    Log.e("parseXML",xmlPullParser.getName());
                }else if(xmlPullParser.getEventType() == XmlPullParser.TEXT){
                    Log.e("parseXML",xmlPullParser.getText());
                }else if(xmlPullParser.getEventType() == XmlPullParser.END_TAG){
                    Log.e("parseXML",xmlPullParser.getName());
                }
                /***
                 * 移到下一个解析事件
                 * **/
                xmlPullParser.next();
            }
            Log.e("parseXML","结束解析");
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

 

运行结果如下:

总结:

1>

由于本示例中用到了SD的读操作,所以在AndroidManifest.xml中声明一下读权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

2>

XML文件的解析方式有很多种,在这里采用Pull方式进行解析,在Pull方式解析的过程中:

xmlPullParser.getEventType()主要是用来获取当前解析器处于哪个节点上;

xmlPullParser.getName()主要是用来获取处在START_TAG或者END_TAG事件时的XML标签名

xmlPullParser.getText()主要是用来获取文本内容

xmlPullParser.next()主要是为了让解析器移动到下一个事件上,这样就可以把整个XML文件都遍历完


源码:

解析XML示例源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值