Welcome to android xml parser example using XMLPullParser. We will have a sample XML file that we will parse in android app and display it on the page.

欢迎使用XMLPullParser的android xml解析器示例。 我们将有一个示例XML文件,该文件将在android应用程序中解析并显示在页面上。

Android XML解析器 (Android XML Parser)

XML stands for Extensible Mark-up Language. XML files are commonly parsed in android to retrieve the relevant information from them. There are three types of android XML parser that we can use.

XML代表可扩展标记语言 。 XML文件通常在android中进行解析,以从中检索相关信息。 我们可以使用三种类型的android XML解析器。

  1. SAX ParsersSAX解析器
  2. DOM ParsersDOM解析器
  3. XMLPullParserXMLPullParser

DOM Parser : DOM parser use an object based approach where the whole xml is loaded into the memory and validated. Then it starts parsing the xml document. It parses from the starting node to the end node. Particular nodes cannot be parsed. Overall it’s slower than the other two.

DOM解析器 :DOM解析器使用基于对象的方法,其中将整个xml加载到内存中并进行验证。 然后,它开始解析xml文档。 它从起始节点解析到结束节点。 无法解析特定的节点。 总体来说,它比其他两个要慢。

SAX and XMLPullParser : These use an object based approach and are similar in terms of memory and performance. SAX is similar to DOM in the context that it begins parsing from top to bottom and there is no way to parse only particular nodes. On the contrary, XMLPullParser can parse particular nodes.

SAX和XMLPullParser :它们使用基于对象的方法,并且在内存和性能方面相似。 在上下文中,SAX与DOM相似,它开始从上到下进行解析,并且无法仅解析特定的节点。 相反,XMLPullParser可以解析特定的节点。

An XML file consists of 4 major components.

XML文件包含4个主要组件。

  1. Prolog : The first line that contains the information about a file is prolog. Typically this is the line: 序言 :包含有关文件信息的第一行是序言。 通常这是这行:
  2. Events : Events in an XML file include simple start and end tags and more事件 :XML文件中的事件包括简单的开始和结束标记等
  3. Text : It’s simple text in between two tags. Example: My Text</RandomTag文字 :两个标签之间的简单文字。 例如:我的文字</ RandomTag
  4. Attributes : Attributes are the additional properties of a tag that are present within the tag. Example : Some Text or nested tags属性 :属性是标签中存在的标签的其他属性。 示例:一些文本或嵌套标签

XMLPullParser (XMLPullParser)

XMLPullParser is the recommended android xml parser.

XMLPullParser是推荐的android xml解析器。

In this tutorial we’ll look to implement an XMLPullParser in our android application.

在本教程中,我们将寻求在我们的android应用程序中实现XMLPullParser。

Android XML解析器示例项目结构 (Android XML Parser Example Project Structure)

Android XML解析器代码 (Android XML Parser code)

We’ve created a assets directory inside the main directory and added an xml file there as shown below.

我们已经在主目录中创建了一个资产目录,并在其中添加了一个xml文件,如下所示。

<?xml version="1.0" encoding="utf-8"?>
<countries><country id="1"><name>India</name><capital>New Delhi</capital></country><country id="2"><name>Australia</name><capital>Canberra</capital></country><country id="3"><name>USA</name><capital>Washington, D.C.</capital></country></countries>

Note: The “id” is the attribute.

注意:“ id”是属性。

The MainActivity.java is given below:

MainActivity.java如下所示:

package com.journaldev.xmlparsing;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;public class MainActivity extends AppCompatActivity {TextView textView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView= (TextView)findViewById(R.id.text);XmlPullParserFactory pullParserFactory;try {pullParserFactory = XmlPullParserFactory.newInstance();XmlPullParser parser = pullParserFactory.newPullParser();InputStream in_s = getApplicationContext().getAssets().open("sample.xml");parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);parser.setInput(in_s, null);ArrayList<Country> countries=  parseXML(parser);String text="";for(Country country:countries){text+= "id : "+country.getId()+" name : "+country.getName()+" capital : "+country.getCapital()+"\n";}textView.setText(text);} catch (XmlPullParserException e) {e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private ArrayList<Country> parseXML(XmlPullParser parser) throws XmlPullParserException,IOException{ArrayList<Country> countries = null;int eventType = parser.getEventType();Country country = null;while (eventType != XmlPullParser.END_DOCUMENT){String name;switch (eventType){case XmlPullParser.START_DOCUMENT:countries = new ArrayList();break;case XmlPullParser.START_TAG:name = parser.getName();if (name.equals("country")){country = new Country();country.id=parser.getAttributeValue(null,"id");} else if (country != null){if (name.equals("name")){country.name = parser.nextText();} else if (name.equals("capital")){country.capital = parser.nextText();}}break;case XmlPullParser.END_TAG:name = parser.getName();if (name.equalsIgnoreCase("country") && country != null){countries.add(country);}}eventType = parser.next();}return countries;}
}

XMLPullParser实例化 (XMLPullParser instantiation)

XMLPullParser can be instantiated in two ways.

XMLPullParser可以通过两种方式实例化。

  1. XmlPullParserFactory pullParserFactory;try {pullParserFactory = XmlPullParserFactory.newInstance();XmlPullParser parser = pullParserFactory.newPullParser();} catch (XmlPullParserException e) {e.printStackTrace();}
  2. XmlPullParser parser = Xml.newPullParser();

    Using switch statements and while loops we parse every tag and look for the relevant data and add the whole object to the ArrayList when the tag ends. We’ve just iterated through the complete ArrayList and appended the strings to display in the default TextView that’s present.

    The output of the application is given below.

    This brings an end to android xml parser tutorial. You can download the Android XML Parsing using XMLPullParser Project from the link given below.

    Download Android XML Parsing using XmlPullParser Project

    Reference: Android Official Doc

    XmlPullParser parser = Xml.newPullParser();

    使用switch语句和while循环,我们解析每个标签并查找相关数据,并在标签结束时将整个对象添加到ArrayList中 。 我们只是遍历了完整的ArrayList,并附加了字符串以显示在当前的默认TextView中。

    该应用程序的输出如下。

    这结束了android xml解析器教程。 您可以从下面提供的链接中使用XMLPullParser Project下载Android XML解析

    使用XmlPullParser Project下载Android XML解析

    参考: Android官方文档

翻译自: https://www.journaldev.com/10653/android-xml-parser-xmlpullparser

Android XML解析器– XMLPullParser相关推荐

  1. android XML解析详解(封装好的工具类)

    常见的XML解析有哪几种? DOM解析; PULL解析;(android自带的解析XML的技术) JDOM解析; SAX解析; DOM4J PULL解析示例代码: <1> 我们要解析的XM ...

  2. XPP3 即 MXP1--一个非常快的XML解析器

    alfresco用到了大量的第三方的工具或者项目.本文列举并介绍这些项目和工具,以便在使用和分析alfresco的时候能够有一些帮助. 1.XPP3 也叫 MXP1 XPP -- XML Pull P ...

  3. XPP3-一个非常快的XML解析器

    1.XPP3 也叫 MXP1 XPP -- XML Pull Parser,XPP3是一个非常快的XML解析器,是第三版的XPP. XPP2是XPP的第二版. XPP3是XPP2的继承者,实现了 ht ...

  4. Java XML解析器

    使用Apache Xerces解析XML文档 一.技术概述 在用Java解析XML时候,一般都使用现成XML解析器来完成,自己编码解析是一件很棘手的问题,对程序员要求很高,一般也没有专业厂商或者开源组 ...

  5. android XMl 解析神奇xstream 六: 把集合list 转化为 XML文档

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

  6. android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

  7. android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

  8. android XMl 解析神奇xstream 二: 把对象转换成xml

    前言:对xstream不理解的请看:android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 1.Javabeen 代码 packa ...

  9. TinyXML:一个优秀的C++ XML解析器

    读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好. TinyXML是一个开源的解 ...

最新文章

  1. 物联网将推动半导体产业继续增长
  2. TCP丢包检测技术详解
  3. 世界上最震撼的地质景观,你认识多少?
  4. JSP中get和post请求方式的区别及乱码解决方法
  5. 双截止阀(DBB)行业调研报告 - 市场现状分析与发展前景预测
  6. 【网络基础】《TCP/IP详解》学习笔记6
  7. c语言文件归档,Go语言tar归档文件的读写操作
  8. 生产者消费者模型(自己上锁与阻塞队列两版本)
  9. Redis安装教程【Windows]
  10. 矩阵公式(转置公式+求导公式)
  11. java版flashplayer下载安装_mac版flash player
  12. 2020年度总结,展望2021
  13. 2023年全国管理类联考英语二真题及解析
  14. 12、Decoder解码器和Encoder编码器
  15. 如何同时训练左手灵活性和音阶思维
  16. pve中新加一块硬盘_J1900工控主板装PVE虚拟机搭爱快LEDE双软路由系统小记
  17. RFID标签的安全机制——LCAP协议的C++代码实现
  18. Es6 set和map
  19. 从模拟切换到真实业务接管,看zCloud如何助力银行灾备演练升级
  20. MATLAB 存放字符串(循环中调用字符串)

热门文章

  1. js判断变量类型是否为字符串,不符合条件则赋值为‘无’
  2. jQuery实用Ajax loading旋转指示器插件
  3. java uuid 随机生成唯一序列号
  4. codeforces332B - Maximum Absurdity 线段数 or dp
  5. [转载] Python str title()方法
  6. [转载] Python基于机器学习方法实现的电影推荐系统
  7. [转载] 【Java核心技术卷】关于除以0的计算
  8. 浅入深出Vue:事件处理
  9. javaScript 对象访问属性的另一种方式
  10. Django笔记 —— 表单(form)