Android中如何解析XML数据

安卓使用XML解析数据并展示到ListView中 先上效果图: 好久不碰XML解析,在此写了个小的demo来温习一下解析XML,其中我用的Pull来解析XML,XML文件存放在tomcat服务器,服务器端采用SSH框架编码完成,由安卓端通过http的GET请求获取到xml,之后就是解析啦,解析完将所有数据存放在实体类中,接下来就是将数据显示在ListView上面了。demo虽小,但其中遇到一些问题卡住我半天,下面就来看看吧。服务器的搭建比较简单了 阅读详情

在如今的Android的网络编程中,JSON数据解析和XML数据解析已经成为两个最主要的网络数据传输方式。本篇文章先来聊聊XML解析。

        XML在Android开发中非常重要,UI设计主要就是用XML进行编写,在此不再赘述。在Android的网络编程中,XML的目的主要是传输数据,而不是显示数据。并且XML没有预定义的标签,没有像HTML中的<p>,<h1>这样的标签,而是由开发者自己定义的。下面先来解析一段简单的XML:

[html]  view plain  copy
 print ?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <languages>  
  3.     <lan id="1">  
  4.         <name>Java</name>  
  5.         <ide>Eclipse</ide>  
  6.     </lan>  
  7.     <lan id="2">  
  8.         <name>C++</name>  
  9.         <ide>Visual Studio</ide>  
  10.     </lan>  
  11. </languages>  

      我需要把每一个元素的id属性,name和ide解析出来。实现的代码如下:

[java]  view plain  copy
 print ?
  1. try {  
  2.     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
  3.     DocumentBuilder builder = factory.newDocumentBuilder();  
  4.     Document document = builder.parse(getAssets().open("languages.xml"));//我把需要解析的XML放到项目的assets文件夹下;一个XML文件相当于一个document;  
  5.     Element languages = document.getDocumentElement();//这是获取根目录,如languages ;这就是一个元素Element;方法getDocumentElement()就是获取xml的根目录;  
  6.     NodeList nodeList = languages.getElementsByTagName("lan");//getElementsByTagName()方法就是根据标签名称来获取一个元素下的其他元素;  
  7.   
  8.     for (int i = 0; i < nodeList.getLength(); i++) {//在一个TextView中进行显示;  
  9.         Element lan = (Element) nodeList.item(i);  
  10.         text.append(lan.getAttribute("id") + "  ");//获得每一个Element的属性;  
  11.         text.append(lan.getElementsByTagName("name").item(0).getTextContent() + "  ");//获得name元素值;  
  12.         text.append(lan.getElementsByTagName("ide").item(0).getTextContent() + "  ");//获得ide元素值;  
  13.         text.append("\n");//换行;  
  14.     }  
  15. } catch (IOException e) {  
  16.     e.printStackTrace();  
  17. } catch (ParserConfigurationException e) {  
  18.     e.printStackTrace();  
  19. } catch (SAXException e) {  
  20.     e.printStackTrace();  
  21. }  
。

        这样解析xml的任务基本就完成了,但是在解析<lan>标签中的元素时,显得不是很聪明,如果元素太多,代码显得很冗余。下面使用两层for循环的实现。代码如下:

[java]  view plain  copy
 print ?
  1. try {  
  2.            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
  3.            DocumentBuilder builder = factory.newDocumentBuilder();  
  4.            Document document = builder.parse(getAssets().open("languages.xml"));  
  5.            Element languages = document.getDocumentElement();//这是获取根目录,如Languages;这就是一个元素Element;  
  6.            NodeList nodeList = languages.getElementsByTagName("lan");  
  7.   
  8.            for (int i = 0; i < nodeList.getLength(); i++) {  
  9.                Element lan = (Element) nodeList.item(i);  
  10.                text.append(lan.getAttribute("id") + "  ");//获得每一个Element的属性;  
  11.   
  12.                NodeList childNodes = lan.getChildNodes();//获取<lan>标签下的子元素,是一个节点列表;  
  13.                for (int j = 0; j < childNodes.getLength(); j++) {//根据子元素的数量进行遍历;  
  14.                    Node node = childNodes.item(j);//每一个子元素都是一个item,也可以理解为一个node;  
  15.                    if (node instanceof Element) {//判断这个node是否是一个Element元素,是的话进行打印;  
  16.                        text.append(node.getTextContent() + "  ");  
  17.                    }  
  18.                }  
  19.                text.append("\n");  
  20.            }  
  21.        } catch (IOException e) {  
  22.            e.printStackTrace();  
  23.        } catch (ParserConfigurationException e) {  
  24.            e.printStackTrace();  
  25.        } catch (SAXException e) {  
  26.            e.printStackTrace();  
  27.        }  

最后实现结果截屏如下:


。也能成功实现XML解析。


github主页:https://github.com/chenyufeng1991  。欢迎大家访问!

     

Android XML数据解析实践:使用SAX解析器 本文还有配套的精品资源,点击获取 简介:本教程深入介绍Android平台下使用SAX解析XML数据的方法,强调其在处理大量数据时内存效率高的特点。通过实例化XML解析器,实现ContentHandler接口以及解析XML文件,本教程展示了如何高效集成XML数据到Android应用,并进行业务逻辑处理。源码项目同时涉及代码结构组织和性能优化,旨在通过实例帮助开发者提升XML处... 阅读详情

相关推荐

【android开发】解析SD卡下的XML文件

解析SD卡中的XML资源文件,获取数据,已备使用。第一次运行会提示将预留在项目中assets文件夹下xml文件拷到设备对应SD卡文件夹下,再运行就会解析出结果。我一直都用的这个,希望对大家有帮助。

Android入门学习笔记(一)|基础知识|文件数据存储读取|解析XML

屏幕分辨率 HVGA:320×480 QVGA:240x320 WQVGA400:240X400 WQVAG432:240X432 WVGA800: 480X800 WVGA854: 480X854 Android应用程序架构 src/ java源代码存放目录 gen/ 自动生成目录 gen 目录中存放所有由Android开发工具自动生成的文件

Only_Tan的专栏 1928

如何在离线的电脑上部署一个本地Deepseek(使用ollama)

例如,如果您的显卡显存为 16GB,官方推荐使用 32b 大小的 DeepSeek 模型。请根据您的硬件配置选择适合的模型版本,以获得最佳性能。首先我们需要将ollama和chatbox的安装包,Deepseek模型文件通过U盘或者光盘的形式导入到这台不能联网的电脑上。按照时间排序,找到最大的那个文件,就是gguf格式的模型,复制出来,改名为qwen2.5-coder0.5b.gguf。:基于开源模型(如 QWEN 和 LLAMA)微调,参数量从 1.5B 到 70B 不等,适合本地硬件部署。

qq_41854911的博客 1万+

php解析安卓xml文件,Android XML数据解析

本节引言:前面两节我们对Android内置的Http请求方式:HttpURLConnection和HttpClient,本来以为OkHttp已经集成进来了,然后想讲解下Okhttp的基本用法,后来发现还是要导第三方,算了,放到进阶部分吧,而本节我们来学习下Android为我们提供的三种解析XML数据的方案!他们分别是:SAX,DOM,PULL三种解析方式,下面我们就来对他们进行学习!1.XML数据...

weixin_26834815的博客 206

电动转向系统 TAS 传感器

靠扭杆变形测力气,用霍尔效应算角度,借 ECU 给电机发指令。它就像 EPS 系统的 "神经末梢",把驾驶员的操作意图转化成电信号,再通过电机变成实实在在的助力,让我们开车既省力又安全。下次转动方向盘时,不妨想想这个藏在转向柱里的 "小传感器"—— 正是它的精准感知,才有了每一次顺畅的转向体验。

weixin_59825476的博客 4291

多GPU时代的虚拟内存革命:CUDA VMM API的跨设备协同设计哲学

本文深入探讨了NVIDIA CUDA VMM API在多GPU系统中的虚拟内存管理革命,解决了传统Peer Access的显存碎片化和同步开销问题。通过地址-内存解耦、按需映射和精细权限控制,VMM API为分布式训练提供了高效的内存协同方案,显著提升大模型训练性能。

weixin_29251337的博客 535

安卓开发工程师-数据解析(JSON、XML)

在解析 JSON 或 XML 数据时,可能会出现各种异常,如格式错误、数据缺失、类型不匹配等。为了保证程序的健壮性,需要对这些异常进行合理的处理。在解析 JSON 或 XML 数据时,可以将解析后的数据缓存起来,以便下次使用时可以直接从缓存中获取,而无需重新解析。在 Android 中,可以使用 DOM(Document Object Model)解析器来解析 XML 数据。动态解析是指在不知道 JSON 或 XML 数据的具体结构的情况下,能够灵活地解析和处理数据。包来解析 JSON 数据。

qq_62784677的博客 1049

手把手教你:如何为自制的STM32H7飞控板适配PX4固件(基于NuttX)

本文详细介绍了如何为自制的STM32H7飞控板适配PX4固件,基于NuttX系统进行移植。从硬件设计规范到软件环境配置,再到PX4固件的移植与调试,提供了完整的实战指南。特别分享了如何复用FMU-v6u参考设计以节省开发时间,并解决了常见问题,帮助开发者快速实现高性能飞控系统的搭建。

weixin_27697385的博客 475

Android解析XML格式数据

Android解析XML格式数据

Android应用开发工程师 1645

嵌入式开发面试题全解析:指针、内存、数据类型关键问题总结

本文对嵌入式开发典型面试题进行深度解析,涵盖多方面关键知识。题目 19 揭示字符指针修改字符串常量的错误操作;题目 20 展现strcpy引发的缓冲区溢出风险;题目 21 体现未初始化数组与strlen结合的不可预测性;题目 22 通过位域与对齐规则计算结构体大小;题目 23 因unsigned char溢出导致循环异常。这些题目全面覆盖指针操作、内存管理、数据类型特性等核心内容,精准指出开发中易疏忽的陷阱,有助于理解编程规范,规避风险,提升代码质量与稳定性,是深入掌握嵌入式开发要点的实用指南。

嵌入式中手 1364

OpenClaw进行安全测试(附使用场景案例)

test-master 是一个全面的测试专家,覆盖功能测试、性能测试、安全测试三大领域。这里我们重点来看下使用test-master如何进行安全测试。使用 test-master 时,可以针对以下高频领域进行专项安全扫描:✅ OWASP Top 10 测试✅ SQL 注入测试✅ XSS 测试✅ CSRF 测试✅ 认证 / 授权测试。

十二测试录 331

Android XML数据解析

Android XML数据解析方法主要包括SAX、DOM和XmlPullParser三种方式。SAX基于事件驱动,适合大文件但代码复杂;DOM构建内存树结构,支持读写但占用内存高;XmlPullParser是Android推荐方式,轻量灵活。解析XML前需配置网络权限,数据可来自网络请求或本地文件。示例展示了SAX解析的实现步骤:创建SAXParser、定义事件处理逻辑并解析输入流。DOM解析则通过DocumentBuilder构建树形结构进行数据提取。开发者可根据需求选择适合的解析方法,注意处理异常和内存

m0_57545130的博客 1158

目标检测YOLO实战应用案例100讲-基于数据融合的SAR图像中海上目标检测与跟踪(中)

本文使用的数据集为欧空局(European Space Agency, ESA)提供的Sentinal-1 数据集,Sentinel-1是欧洲“哥白尼计划”的SAR卫星机群,主要是用于陆地和海 洋服务的极地轨道全天候昼夜雷达成像任务[ 34]。Sentinel-1A于2014年4月3日发 射升空,Sentinel-1B于2016年4月25日发射升空,每颗卫星都携带C波段SAR, 共同提供地球表面的全天候、昼夜图像。

qq_36130719的博客 359

Android网络数据xml解析

Android网络编程里,如果要将web端的数据(也就是Java端)给Android端,Android去接收数据,最常见就有解析xml了,那么今天我们就来讲讲怎样解析xml     我们先在web端里模拟一组数据,并将它发送到请求域当中去,代码如下:(我用的是ssh框架)     public class FQAcgtion extends ActionSupport { /** *

Perpetual1006的博客 534

PCL 使用点云创建数字高程模型DEM【2025最新版】

使用点云创建数字高程模型DEM,并将结果保存为高程图像。博客长期更新,本文最近更新时间为:2025年9月15日。

点云侠的博客 2294

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Android 之解析Xml格式数据

解析Xml格式数据

i_nclude的博客 1498

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Android解析xml数据

public class XmlParserUtils { //解析xml的业务方法 public List parserXml(InputStream in) throws Exception { List newsLists=null; News news=null; //获取xml的解析器 XmlPullParser xmlPullPa

东天里的冬天 725

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Android中XML及JSON数据的解析

在Android学习中,掌握各种数据的解析至关重要,这篇博客主要介绍一下XML和JSON两种数据常用的解析方法。 1.xml数据的解析 解析XML格式的数据其实也有许多方式,我们主要介绍两种最常用的,Pull解析和SAX解析。 (1)Pull解析 这里先定义一段XML代码,并对其进行解析 <?xml version="1.0" encoding="utf-8"?> &l...

Healer_LU的博客 541

50. 【Android教程】xml 数据解析

xml 是一种标记扩展语言(Extension Mark-up Language),学到这里大家对 xml 语言一定不陌生,但是它在 Android 中的运用其实只是冰山一角。抛开 Android,XML 也被广泛运用于各种数据结构中。在运用 xml 编写 Android 布局的过程中,大家有没有好奇我们写的 LinearLayout 或者 RelativeLayout 等布局是怎么变系统解析成 UI 样式的?这一节我们来揭晓谜底。

这是一个web全栈开发的博客,取其精华去其糟粕,争取让大家一看就懂,一学就会,一用就成~ 1478

Android xml数据解析

Android xml数据解析方式一般有:XmlPullParser、DOM解析器、以及SAX解析器。

MengLong493的博客 688

【安卓】解析XML格式数据

这里需要搭建一个Web服务器,在这个服务器上提供一段XML文本,然后在程序里去访问这个服务器,再对得到的XML文本进行解析。首先需要下载一个Apache服务器的安装包,官方下载地址是:http://httpd.apache.org。然后一直点击“Next”,会提示让你输入自己的域名,我们随便填一个域名就可以了。之后继续点击“Next”就可以完成安装了,安装成功后服务器会自动启动。

君子慎独,不欺暗室。卑以自牧,含章可贞。 1220

android解析xml数据格式,Android读取XML文件中的数据

本文实例为大家分享了Android读取XML文件中数据的具体代码,供大家参考,具体内容如下读取XML中存储的数据。将xmlfile.xml存放在assets文件夹中。在activity_main.xml中创建一个textview,用来显示读取到的数据。XML文件内容如下:xmlfile.xmlJavaEclipse面向对象CVS面向过程C#vs面向对象MainActivity.java使用的是W3...

weixin_35261385的博客 476

Android PUll解析xml 格式数据

在Android中,XML数据格式的解析主要有三种方式:Pull 解析、SAX解析和DOM解析。 在这里我来使用一下第一种解析方式。 Pull 解析方式是比较常用的一种,Android提供了一个类:XmlPullParserFactory ,在这里进行了一系列的数据解析操作。 我们可以直接使用方法: 第一步: 实例类对象 XmlPullParserFactory : XmlPull...

lsbsheng的博客 253
上一篇: Android中关于Activity/ActionBarActivity/AppCompatActivity的区分与理解
下一篇: Android中如何解析JSON数据
心态决定状态
博客等级 码龄16年 14粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值