android studio xml解析,浅谈Android Studio 解析XML的三种方法

一丶概述文件解析要求,json解析和xml解析,前面文章说过Json转实体类,这里就说说解析XML内容:Android Studio 解析XML常见的三种方式:DOM PULL SAX (实现XML转实体类并打印输出)效果演示:二丶正文SAX(Simple API for XML) 使用流式处理的方式,它并不记录所读内容的相关信息。它是一种以事件为驱动的XML API,解析速度快,占用内存少。使用...
摘要由CSDN通过智能技术生成

一丶概述

文件解析要求,json解析和xml解析,前面文章说过Json转实体类,这里就说说解析XML

内容:

Android Studio 解析XML常见的三种方式:DOM PULL SAX (实现XML转实体类并打印输出)

效果演示:

68189fef19fbc25904628c85a8a77b59.gif

二丶正文

SAX(Simple API for XML) 使用流式处理的方式,它并不记录所读内容的相关信息。它是一种以事件为驱动的XML API,解析速度快,占用内存少。使用回调函数来实现。 缺点是不能倒退。

DOM(Document Object Model) 是一种用于XML文档的对象模型,可用于直接访问XML文档的各个部分。它是一次性全部将内容加载在内存中,生成一个树状结构,它没有涉及回调和复杂的状态管理。 缺点是加载大文档时效率低下。

Pull内置于Android系统中。也是官方解析布局文件所使用的方式。Pull与SAX有点类似,都提供了类似的事件,如开始元素和结束元素。不同的是,SAX的事件驱动是回调相应方法,需要提供回调的方法,而后在SAX内部自动调用相应的方法。而Pull解析器并没有强制要求提供触发的方法。因为他触发的事件不是一个方法,而是一个数字。它使用方便,效率高。

SAX、DOM、Pull的比较:

1. 内存占用:SAX、Pull比DOM要好;

2. 编程方式:SAX采用事件驱动,在相应事件触发的时候,会调用用户编好的方法,也即每解析一类XML,就要编写一个新的适合该类XML的处理类。DOM是W3C的规范,Pull简洁。

3. 访问与修改:SAX采用流式解析,DOM随机访问。

4. 访问方式:SAX,Pull解析的方式是同步的,DOM逐字逐句

这里不做详细讲解,看注释,上代码

6d399c57a56c7ba45464d7b50be7202a.png

XML

李雷

30

韩梅梅

25

person.Java

public class Person {

Integer id;

String name;

Short age;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Short

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio 中,XML 解析通常用于解析布局文件和资源文件。以下是一些常用的 XML 解析方法: 1. 使用 DOM 解析器:可以将 XML 文件解析为一棵树形结构,然后通过遍历树的节点来获取所需的数据。 2. 使用 SAX 解析器:可以将 XML 文件解析为一系列事件,然后通过监听这些事件来获取所需的数据。 3. 使用 XmlPullParser 解析器:可以逐行解析 XML 文件,然后通过判断标签类型和属性值来获取所需的数据。 在 Android Studio 中,通常使用 XmlPullParser 来解析布局文件和资源文件,因为它具有轻量级、速度快和易于使用的优点。要使用 XmlPullParser,可以使用以下代码: ```java XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(true); XmlPullParser xpp = factory.newPullParser(); xpp.setInput(new StringReader(xmlString)); int eventType = xpp.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { if(eventType == XmlPullParser.START_TAG) { // 处理开始标签 } else if(eventType == XmlPullParser.END_TAG) { // 处理结束标签 } else if(eventType == XmlPullParser.TEXT) { // 处理标签文本 } eventType = xpp.next(); } ``` 其中,xmlString 是要解析XML 字符串,eventType 表示当前处理的事件类型。在处理开始标签时,可以使用 getAttribute() 方法获取标签属性值;在处理标签文本时,可以使用 getText() 方法获取文本内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值