本篇文章给大家分享的是有关Android中怎么解析XML文件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。XMLXML(eXtensible Markup Language)中
本篇文章给大家分享的是有关Android中怎么解析XML文件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
XML
XML(eXtensible Markup Language)中文名为可扩展标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。
用途
XML设计用了传送及携带数据信息,不用了表现或展示数据,html语言则用了表现数据,所以XML用途的焦点是它说明数据是什么,以及携带数据信息。
丰富文件——自定文件描述并使其更丰富
元数据——描述其它文件或网络资讯
配置文档——描述软件设置的参数
结构
每个XML文档都由XML序言开始,在前面的代码中第一行就是XML序言,<?xml version="1.0"?>。这一行代码会告诉解析器或浏览器这个文件应该按照XML规则进行解析。但是,根元素的名称是由文档类型定义或XML纲要定义的。
XmlPullParser
PULL解析xml是基于事件驱动的方式解析XML文件,pull开始解析时,我们可以先通过getEventType()方法获取当前解析事件类型,并且通过next()方法获取下一个解析事件类型。PULL解析器提供了START_DOCUMENT(开始文档)、END_DOCUMENT(结束文档)、START_TAG(开始标签)、END_TAG(结束标签)四种事件解析类型。当处于某个元素时,可以调用getAttributeValue()方法获取属性的值,也可以通过nextText()方法获取本节点的文本值。下面通过一个例子来进行解析。
xml示例文件
需要解析的xml示例文件代码如下:
<?xml version="1.0" encoding="UTF-8"?><colleagues> <colleague id="1"> <name>耗子</name> <age>24</age> <sex>boy</sex> </colleague> <colleague id="2"> <name>璐璐</name> <age>28</age> <sex>girl</sex> </colleague> <colleague id="3"> <name>陈善</name> <age>26</age> <sex>boy</sex> </colleague></colleagues>
XmlPullParser解析器
package com.example.shakedemo;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import org.xmlpull.v1.XmlPullParserFactory;import android.R.xml;import android.util.Log;import android.util.Xml;public class XmlPullParserHelper { public static List<Colleague> getColleagues(String xmlFilePath) { List<Colleague> colleagues = new ArrayList<Colleague>(); FileReader xmlReader = null; try { xmlReader = new FileReader(new File(xmlFilePath)); } catch (FileNotFoundException e) { Log.e("wzy", "Couldn't find xml file " + xmlFilePath); return colleagues; } try { // 方式1: 使用 Android 提供的android.util.Xml 类获取 parser 对象 XmlPullParser parser = Xml.newPullParser(); // 方式2: 使用工厂类 XmlPullParserFactory // XmlPullParserFactory pullFactory = // XmlPullParserFactory.newInstance(); // XmlPullParser parser = pullFactory.newPullParser(); // 设置文件输入流 parser.setInput(xmlReader); // 得到当前事件类型 int eventType = parser.getEventType(); Colleague colleague = null; while (eventType != XmlPullParser.END_DOCUMENT) { switch (eventType) { case XmlPullParser.START_DOCUMENT: break; case XmlPullParser.START_TAG: String name = parser.getName(); if ("colleague".equals(name)) { colleague = new Colleague(); colleague.setId(Integer.parseInt(parser.getAttributeValue(null, "id"))); } else if ("name".equals(name)) { if (colleague != null) { colleague.setName(parser.nextText()); } } else if ("age".equals(name)) { if (colleague != null) { colleague.setAge(Integer.parseInt(parser.nextText())); } } else if ("sex".equals(name)) { if (colleague != null) { colleague.setSex(parser.nextText()); } } break; case XmlPullParser.END_TAG: if ("colleague".equals(parser.getName()) && colleague != null) { colleagues.add(colleague); colleague = null; } break; } eventType = parser.next(); } xmlReader.close(); } catch (XmlPullParserException e) { // Do nothing } catch (IOException e) { // Do nothing } return colleagues; }}
其中,colleague类的定义比较简单,代码如下:
package com.example.shakedemo;public class Colleague { private int id; private int age; private String name; private String sex; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } @Override public String toString() { return "ID is " + id + ", Name is " + name + ", Sex is " + sex; }}
以上就是Android中怎么解析XML文件,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。
--结束END--
本文标题: Android中怎么解析XML文件
本文链接: https://lsjlt.com/news/221915.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0