Android中解析XML总结

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010661782/article/details/51771407

前言:

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示例源码

展开阅读全文

没有更多推荐了,返回首页