我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android中如何实现XML解析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android中如何实现XML解析

这篇文章主要为大家展示了“Android中如何实现XML解析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android中如何实现XML解析”这篇文章吧。

首先创建在Android工程中创建一个Assets文件夹 app/class="lazy" data-src/main/assets

Android中如何实现XML解析

在这里添加一个名为 data.xml的文件,然后编辑这个文件,加入如下XML格式内容

<?xml version="1.0" encoding="utf-8"?><apps>  <app>    <id>1</id>    <name>Google Maps</name>    <version>1.0</version>  </app>  <app>    <id>2</id>    <name>Chrome</name>    <version>2.1</version>  </app>  <app>    <id>3</id>    <name>Google play</name>    <version>2.3</version>  </app></apps>

==============获取XML中内容================

  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    try {      //获取XML文件的输入流      InputStream fis = getResources().getAssets().open("data.xml");      InputStreamReader isr = new InputStreamReader(fis, "UTF-8");      StringBuffer stringBuffer = new StringBuffer();      int mark = -1;      while ((mark = isr.read()) != -1) {        stringBuffer.append((char) mark);      }      String data = stringBuffer.toString();      //把整个文件内容以String方式传入      //parseXMLWithPull(data);      //parseXMLWithSAX(data);    } catch (IOException e) {      e.printStackTrace();    }  }

==============Pull解析方式=================

获取解析工具XmlPullParser:

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();XmlPullParser xmlPullParser = factory.newPullParser();

传入XML字符流:

xmlPullParser.setInput(new StringReader(xmlData));

根据节点特征进行处理:

switch ( xmlPullParser.getEventType() )
  private void parseXMLWithPull(String xmlData) {    try {      XmlPullParserFactory factory = XmlPullParserFactory.newInstance();      XmlPullParser xmlPullParser = factory.newPullParser();      xmlPullParser.setInput(new StringReader(xmlData));      int eventType = xmlPullParser.getEventType();      String id = "";      String name = "";      String version = "";      while (eventType != xmlPullParser.END_DOCUMENT) {        String nodeName = xmlPullParser.getName();        switch (eventType) {          //开始解析某个节点          case XmlPullParser.START_TAG: {            if ("id".equals(nodeName)) {              id = xmlPullParser.nextText();            } else if ("name".equals(nodeName)) {              name = xmlPullParser.nextText();            } else if ("version".equals(nodeName)) {              version = xmlPullParser.nextText();            }          }          break;          //完成解析某个节点          case XmlPullParser.END_TAG: {            if ("app".equals(nodeName)) {              Log.d("woider", "id is " + id);              Log.d("woider", "name is " + name);              Log.d("woider", "version is " + version);            }          }          break;        }        eventType = xmlPullParser.next();      }    } catch (Exception e) {      e.printStackTrace();    }  }

==============SAX解析方式=================

使用SAX解析通常需要创建一个类继承DefaultHandler,并重写父类的五个方法

startDocument():开始XML解析的时候调用
startElement():开始解析某个结点的时候调用
characters():获取节点中内容的时候调用
endElement():完成解析某个节点的时候调用
endDocument():完成整个XML解析的时候调用

public class ContentHandler extends DefaultHandler {  private String nodeName;  private StringBuilder id;  private StringBuilder name;  private StringBuilder version;  @Override  public void startDocument() throws SAXException {    id = new StringBuilder();    name = new StringBuilder();    version = new StringBuilder();  }  @Override  public void startElement(String uri, String localName, String qName, Attributes attributes)      throws SAXException {    //记住当前结点名    nodeName = localName;  }  @Override  public void characters(char[] ch, int start, int length) throws SAXException {    //进行格式规范化    String str = new String(ch, start, length).trim();    //根据当前节点名添加内容    if ("id".equals(nodeName)) {      id.append(str);    } else if ("name".equals(nodeName)) {      name.append(str);    } else if ("version".equals(nodeName)) {      version.append(str);    }  }  @Override  public void endElement(String uri, String localName, String qName) throws SAXException {    if ("app".equals(localName)) {      Log.d("woider", "id is " + id);      Log.d("woider", "name is " + name);      Log.d("woider", "version is " + version);      //清空StringBuilder      id.setLength(0);      name.setLength(0);      version.setLength(0);    }  }  @Override  public void endDocument() throws SAXException {  }}

获取解析工具XMLReader:

SAXParserFactory factory = SAXParserFactory.newInstance();XMLReader xmlReader = factory.newSAXParser().getXMLReader();

传入规则到解析工具:

ContentHandler handler = new ContentHandler();xmlReader.setContentHandler(handler);

开始执行解析:

xmlReader.parse(new InputSource(new StringReader(xmlData)));
  private void parseXMLWithSAX(String xmlData) {    try {      SAXParserFactory factory = SAXParserFactory.newInstance();      XMLReader xmlReader = factory.newSAXParser().getXMLReader();      ContentHandler handler = new ContentHandler();      //将ContentHandler的实例设置到XMLReader中      xmlReader.setContentHandler(handler);      //开始执行解析      xmlReader.parse(new InputSource(new StringReader(xmlData)));    } catch (Exception e) {      e.printStackTrace();    }  }

方法二(直接针对InputStream解析)

获取解析工具SAXParser:

SAXParserFactory factory = SAXParserFactory.newInstance();SAXParser parser = factory.newSAXParser();

获取规则和输入流:

handler = new ParserHandler();InputStream inputStream = getResources().getAssets().open("data.xml");

同时传入开始解析:

parser.parse(inputStream, handler);

最后打印 LogCat 中的日志,data.xml的解析就完成了

Android中如何实现XML解析

除了 Pull 解析和 SAX 解析之外,还有一种 DOM 解析也非常重要。

另外还有一些XML解析工具,比如 JDOM 和 DOM4J,它们简化了解析的步骤,提高了解析的效率。

以上是“Android中如何实现XML解析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android中如何实现XML解析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android中如何实现XML解析

这篇文章主要为大家展示了“Android中如何实现XML解析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android中如何实现XML解析”这篇文章吧。首先创建在Android工程中创建一个A
2023-05-30

Android应用中如何对xml进行解析

本篇文章给大家分享的是有关Android应用中如何对xml进行解析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。XmlActivity package com.Android.
2023-05-31

Python中如何解析XML

Python中如何解析XML,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。什么是XML?XML是可扩展标记语言(Extensible Markup Langua
2023-06-17

基于Android XML解析与保存的实现

解析XML文件:在Android平台上可以使用SAX、DOM和Android附带的pull解析器解析XML文件;pull解析器提供了各种事件,使用parser.next()方法进入下一个元素并触发相应事件,pull解析器产生的事件是一个数字
2022-06-06

实例解析Android中使用Pull解析器解析XML的方法

1.Pull简介 Pull解析器是Android系统内置的的,Pull解析器与SAX解析器类似,他提供了类似的事件,如开始元素和介绍元素的事件,使用parser.next()可以进入下一个元素并触发相应的事件,然后进行相应的处理,当元素开始
2022-06-06

详解Android中解析XML的方法

XML在各种开发中都广泛应用,Android也不例外。作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能。今天就由我向大家介绍一下在Android平台下几种常见的XML解析和创建的方法。在Android中,常见
2022-06-06

Android使用Pull解析器解析xml文件的实现代码

2个类:1个实体类Person.java,1个继承Activity的类 1.Person.java代码如下:package com.mrzhu.work_1_sax; public class Person { private Stri
2022-06-06

Android中怎么解析XML文件

本篇文章给大家分享的是有关Android中怎么解析XML文件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。XMLXML(eXtensible Markup Language)中
2023-05-30

Android中怎么使用 pull解析xml

本篇文章为大家展示了Android中怎么使用 pull解析xml,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。persons.xml
2023-05-30

在java中使用dom4j包如何实现一个解析XML功能

这篇文章将为大家详细讲解有关在java中使用dom4j包如何实现一个解析XML功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。具体如下:xml文件内容如下:2023-05-31

PHP中如何处理XML解析错误?

PHP是一种广泛使用的编程语言,它支持许多不同的文件格式,包括XML。在处理XML文件时,可能会出现解析错误。本文将介绍如何在PHP中处理XML解析错误,并提供一些具体的代码示例。检查XML文件格式在处理XML文件之前,必须确保XML文件的
PHP中如何处理XML解析错误?
2023-12-09

分析如何在Python中解析和修改XML

目录一、什么是XML?二、Python XML解析模块2.1、xml.etree.ElementTree模块2.2、xml.dom.minidom模块一、什么是XML? XML代表可扩展标记语言。它在外观上类似于HTML,但XML用于数据表
2022-06-02

Java如何解析 XML 文档

本教程详细介绍了使用Java解析XML文档的两种主要方法:DOM解析和SAX解析。DOM解析:将整个XML文档加载到内存中,创建一棵树形表示文档结构。它适合需要随机访问文档各个部分的情况。SAX解析:按顺序处理XML文档事件,比DOM解析器更快,因为它不会将整个文档加载到内存中。适合需要按顺序处理文档的情况。
Java如何解析 XML 文档
2024-04-02

Android编程实现XML解析与保存的三种方法详解

本文实例讲述了Android编程实现XML解析与保存的三种方法。分享给大家供大家参考,具体如下:简介在Android开发中,关于XML解析有三种方式,分别是:1. SAX 基于事件的解析器,解析速度快,占用内存少。非常适合在Android移
2023-05-30

PHP如何解析 XML 文档

本文讲解了PHP解析XML文档的三种方法:DOM、SAX和SimpleXML。DOM提供了灵活的操作文档的能力,SAX速度更快,SimpleXML使用更简单。选择最合适的解析器取决于应用程序的需求。DOM适合需要灵活性和操作文档的能力,SAX适合需要速度和内存效率,SimpleXML适合需要简单性和易用性的应用程序。
PHP如何解析 XML 文档
2024-04-02

Python如何解析 XML 文档

本文详解Python解析XML文档的方法,包括ElementTree、SAX、lxml和minidom。选择解析器取决于特定需求,如文档大小、自定义要求和高级功能(如XPath)。ElementTree简单易用,适合中小文档;SAX高效,适用于大型文档;lxml功能强大,支持高级功能;minidom提供DOM树直接访问。
Python如何解析 XML 文档
2024-04-02

c语言如何解析xml

解析 xml 的 c 语言方法:直接解析:使用手动编写的代码或第三方库(如 expat、libxml2)。利用库:使用预先编写的库,如 expat、libxml2 或 tinyxml。使用 dom(文档对象模型):使用对象模型以树状结构访问
c语言如何解析xml
2024-05-21

如何使用 PHP 解析 XML?

解析 xml 的方法:simplexml:使用对象语法,解析简单 xml 文档。domdocument:提供对 xml 文档的精细控制。如何在 PHP 中解析 XML解析 XML 是 web 开发中一项常见任务,PHP 提供了几种解析 X
如何使用 PHP 解析 XML?
2024-04-20

Android提高之XML解析与生成实例详解

本文实例讲述了使用SAX来解析XML。通常来说在Android里面可以使用SAX和DOM,DOM需要把整个XML文件读入内存再解析,比较消耗内存,而SAX是基于事件驱动的处理方式,可以在各节点触发回调函数,不过SAX适合节点结构简单的XML
2022-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录