iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Android中如何实现XML解析
  • 662
分享到

Android中如何实现XML解析

androidxml 2023-05-30 22:05:09 662人浏览 泡泡鱼
摘要

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

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

首先创建在Android工程中创建一个Assets文件夹 app/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解析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Android中如何实现XML解析

本文链接: https://www.lsjlt.com/news/221726.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Android中如何实现XML解析
    这篇文章主要为大家展示了“Android中如何实现XML解析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android中如何实现XML解析”这篇文章吧。首先创建在Android工程中创建一个A...
    99+
    2023-05-30
    android xml
  • Android应用中如何对xml进行解析
    本篇文章给大家分享的是有关Android应用中如何对xml进行解析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。XmlActivity package com.And...
    99+
    2023-05-31
    android xml roi
  • Android中的xml解析介绍
    目录XML - 元素XML - 解析例子总结XML 代表可扩展标记语言。XML 是一种非常流行的格式,通常用于在 Internet 上共享数据。本章说明如何解析 XML 文件并从中提...
    99+
    2024-04-02
  • Python中如何解析XML
    Python中如何解析XML,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。什么是XMLXML是可扩展标记语言(Extensible Markup Languag...
    99+
    2023-06-17
  • Android中怎么解析XML文件
    本篇文章给大家分享的是有关Android中怎么解析XML文件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。XMLXML(eXtensible Markup Language)中...
    99+
    2023-05-30
    android
  • Android中怎么使用 pull解析xml
    本篇文章为大家展示了Android中怎么使用 pull解析xml,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。persons.xml<xml version="1.0&qu...
    99+
    2023-05-30
    android pull xml
  • Android编程实现XML解析与保存的三种方法详解
    本文实例讲述了Android编程实现XML解析与保存的三种方法。分享给大家供大家参考,具体如下:简介在Android开发中,关于XML解析有三种方式,分别是: SAX 基于事件的解析器,解析速度快,占用内存少。非常适合在Android移动设...
    99+
    2023-05-30
    android xml roi
  • 在java中使用dom4j包如何实现一个解析XML功能
    这篇文章将为大家详细讲解有关在java中使用dom4j包如何实现一个解析XML功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。具体如下:xml文件内容如下:<&#63;xml...
    99+
    2023-05-31
    java dom4j xml
  • PHP中如何处理XML解析错误?
    PHP是一种广泛使用的编程语言,它支持许多不同的文件格式,包括XML。在处理XML文件时,可能会出现解析错误。本文将介绍如何在PHP中处理XML解析错误,并提供一些具体的代码示例。检查XML文件格式在处理XML文件之前,必须确保XML文件的...
    99+
    2023-12-09
    PHP编程 错误处理 XML解析
  • Android开发中解析xml的方法有哪些
    这篇文章给大家介绍Android开发中解析xml的方法有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。第一步:新建一个Android工程,命名为XmlDemo第二步:修改main.xml布局文件,代码如下:<...
    99+
    2023-05-31
    android xml roi
  • 如何使用 PHP 解析 XML?
    解析 xml 的方法:simplexml:使用对象语法,解析简单 xml 文档。domdocument:提供对 xml 文档的精细控制。 如何在 PHP 中解析 XML 解析 XML ...
    99+
    2024-04-20
    php xml
  • Android XML数据解析要点介绍
    目录1.XML数据要点介绍2.三种解析XML方法的比较3.SAX解析XML数据4.DOM解析XML数据5.PULL解析XML数据6.代码示例下载:1.XML数据要点介绍 首先我们来看...
    99+
    2023-05-17
    Android XML数据解析 Android XML
  • BeautifulSoup如何解析XML文档中的XML默认命名空间
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • Android结合xml实现帧动画
    目录1 创建 xml 动画文件2 加载使用3 聊一聊 AnimationDrawable3.1 使用 ViewTreeObserver3.2 使用 RunAnim3.3 在 Acti...
    99+
    2024-04-02
  • 如何使用jQuery来解析XML
    这篇文章主要介绍了如何使用jQuery来解析XML,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用jQuery来解析XMLfunction parseXml(xm...
    99+
    2023-06-27
  • Android中如何实现OKHttp
    这篇文章将为大家详细讲解有关Android中如何实现OKHttp,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。下面是官网给出的OKHTTP的特点:支持HTTP/2, HTTP/2通过使用多路复用技术在一个...
    99+
    2023-06-15
  • Linq如何实现XML转换
    本篇文章给大家分享的是有关Linq如何实现XML转换,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。学习Linq时,经常会遇到Linq实现XML转换问题,这里将介绍Linq实现X...
    99+
    2023-06-17
  • Android项目中解析XML文件的方法有哪些
    今天就跟大家聊聊有关Android项目中解析XML文件的方法有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。xml文件代码<&#63;xml version=&qu...
    99+
    2023-05-31
    android xml roi
  • Android中的Xml 文档怎么利用XmlPullParser 进行解析
    这期内容当中小编将会给大家带来有关Android中的Xml 文档怎么利用XmlPullParser 进行解析 ,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Android XmlPullParser 方式...
    99+
    2023-05-31
    android xmlpullparser xml
  • Java中解析XML文件
    1.初识XML 1.1 定义         XML(EXtensible Markup Language),可扩展标记语言,相比于HTML可以自定义标签,不遵循W3C标准         XML特点:跨平台、跨语言、跨系统。XML与操作系...
    99+
    2023-09-23
    xml
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作