📜  Android-XML解析器(1)

📅  最后修改于: 2023-12-03 15:29:22.456000             🧑  作者: Mango

Android-XML解析器

简介

Android-XML解析器是一个用于解析XML文件的工具,它能够将XML文件中的数据读取出来供程序使用。Android-XML解析器是Android平台中非常常用的一个解析工具。常见的XML解析工具包括SAX、DOM和Pull解析器,其中Pull解析器是Android-XML解析器默认使用的方式。

Pull解析器
Pull解析器的优点
  • Pull解析器运行速度快、占用内存小。
  • Pull解析器事件驱动型,适合用于大型XML文件的解析。
  • Pull解析器唯一的一个操作对象--XmlPullParser,对使用者来说比较友好。
Pull解析器使用方式
  1. 创建XmlPullParser实例
XmlPullParserFactory xmlPullParserFactory = XmlPullParserFactory.newInstance();
XmlPullParser xmlPullParser = xmlPullParserFactory.newPullParser();
  1. 设置XML数据源
xmlPullParser.setInput(inputStream, "UTF-8");
  1. 逐行读取XML数据,从而获知当前正在处理元素的类型,节点名称和节点值等信息
while (xmlPullParser.getEventType() != XmlPullParser.END_DOCUMENT) {
    switch (xmlPullParser.getEventType()) {
        case XmlPullParser.START_DOCUMENT:
            // 解析XML开始
            break;
        case XmlPullParser.START_TAG:
            // 解析元素开始
            break;
        case XmlPullParser.TEXT:
            // 解析元素值
            break;
        case XmlPullParser.END_TAG:
            // 解析元素结束
            break;
        default:
            break;
    }
    xmlPullParser.next();
}
Pull解析器示例

例如,我们有一份如下的XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<books>
    <book id="1">
        <name>Android进阶之光</name>
        <author>李刚、余攀</author>
        <publisher>电子工业出版社</publisher>
        <price>59.00</price>
    </book>
    <book id="2">
        <name>第一行代码:Android</name>
        <author>郭霖</author>
        <publisher>人民邮电出版社</publisher>
        <price>78.00</price>
    </book>
</books>

使用Pull解析器可以这样来读取XML文件的内容:

XmlPullParserFactory xmlPullParserFactory = XmlPullParserFactory.newInstance();
XmlPullParser xmlPullParser = xmlPullParserFactory.newPullParser();
InputStream inputStream = context.getAssets().open("books.xml");
xmlPullParser.setInput(inputStream, "UTF-8");
int eventType = xmlPullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
    switch (eventType) {
        case XmlPullParser.START_DOCUMENT:
            break;
        case XmlPullParser.START_TAG:
            String tagName = xmlPullParser.getName();
            if (tagName.equals("book")) {
                String id = xmlPullParser.getAttributeValue(null, "id");
            } else if (tagName.equals("name")) {
                String name = xmlPullParser.nextText();
            } else if (tagName.equals("author")) {
                String author = xmlPullParser.nextText();
            } else if (tagName.equals("publisher")) {
                String publisher = xmlPullParser.nextText();
            } else if (tagName.equals("price")) {
                String price = xmlPullParser.nextText();
            }
            break;
        case XmlPullParser.END_TAG:
            break;
        default:
            break;
    }
    eventType = xmlPullParser.next();
}
inputStream.close();
结语

Android-XML解析器是Android平台中非常常用的一个解析工具,其中Pull解析器是Android-XML解析器默认使用的方式。本文以Pull解析器为例,介绍了这个工具的使用方法,希望对大家有所帮助。