您的位置:首页 > 移动开发 > Android开发

Android中解析XML总结

2016-06-27 21:25 435 查看
前言:

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示例源码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: