XML 是一种自描述的数据交换格式,但是 XML 的数据交换格式并没有 JSON 来的轻便,但是无可否认的是,XML 的应用范围也是非常广泛的,比如在 ROS(一个开源机器人操作系统)中利用 XML 来描述包的依赖关系等,当然还有很多了。

     对于 XML 文档操作包括了“读”与“写”,读入 XML 文档并分析的过程称为“解析” XML 文档,“解析” XML 文档在实际开发中是占很大比重的。

     读写 XML 文档,目前流行的有两种模式:SAX 和 DOM 。SAM 是一种基于事件驱动的解析模式。解析 XML 的时候,程序从上到下读取 XML 文档,如果遇到开始标签、结束标签、属性等,就会触发相应的事件,但是这种解析 XML 文件有一个弊端就是只能读取 XML 文档,而不能写入 XML 文档。但是也是有优点的,就是解析速度快,而iOS中推荐使用 SAX 解析模式。

     DOM 模式是将 XML 文档作为一棵树状结构来进行分析,提供获取节点的内容,以及相关属性,或是新增、删除和修改节点的内容。 XML 解析器在加载 XML 文件以后,DOM 将 XML 文件的元素视为一个树状结构的节点,一次性读入到内存中。如果文档比较大,解析速度就会比较慢,这是不可避免的。但是 DOM 模式有一点是 SAX 无法取代的,就是 DOM 能够修改 XML 文档。

     NSXML

     NSXML 是苹果自家默认的解析框架,采用 SAX 模式进行解析。它是 SAX 解析模式的代表。NSXML 框架中的核心是 NSXMLParser 和它的委托协议 NSXMLParserDelegate。主要的解析工作是在委托协议的实现类中完成的,委托中定义了很多回调方法,在 SAX 解析器从上到下遍历 XML 文档的过程中,遇到开始标签、结束标签、文档开始、文档结束和字符串就会触发相关方法。

     常用的方法:

     (1)parserDidStartDocument --文档开始的时候触发

     (2)parser:didStartElement:namespaceURI:qualifiedName:attributes --遇到一个开始标签时开始触发,其中 namespaceURI 部分是命名空间, qualifiedName 是限定名,attributes 是字典类型的属性集合

     (3)parser:foundCharacters --遇到字符串时触发

     (4)parser:didEndElement:namespaceURI:qualifiedName --遇到结束标签时触发

     (5)parserDidEndDocument --遇到文档结束时触发

      下面实现一个解析的XMLParser类。

      XMLParser.h

#import <Foundation/Foundation.h>@interface XMLParser : NSObject <NSXMLParserDelegate>//开始解析
-(void)start;@end

XMLParser.m

-(void)start
{NSString* path = [[NSBundle mainBundle] pathForResource:@"Test" ofType:@"xml"];     //解析一个Test.xml文件的文档NSURL *url = [NSURL fileURLWithPath:path];//开始解析XMLNSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];parser.delegate = self;[parser parse];NSLog(@"解析完成...");
}

    如有不足之处还望指出!

iOS 中 XML 数据交换格式相关推荐

  1. 主要的数据交换格式XML与JASON

    数据交换格式就像两个人在聊天一样,采用彼此都听得懂的语言.其中的语言就相当于通信中的数据交换格式.数据交换格式主要分为纯文本格式,XML格式和JSON格式,其中纯文本格式是一种简单的,无格式的数据交换 ...

  2. XML和JSON 数据交换格式

    为什么80%的码农都做不了架构师?>>>    一.什么是数据交换格式? 客户端与服务器常用数据交换格式xml.json.html 二.数据交换格式应用场景 移动端(安卓.IOS)通 ...

  3. 数据交换格式Json与XML

    什么是数据交换格式: 主流的有Json.XML.HTML. 数据交换格式的应用场景: 移动端(安卓,IOS)通讯方式采用http协议+Json格式的restful风格. 很多互联网公司都是用Http协 ...

  4. XML和JSON两种数据交换格式的比较

    目前,在web开发领域,主要的数据交换格式有XML和JSON,对于XML相信每一个web developer都不会感到陌生: 相比之下,JSON可能对于一些新步入开发领域的新手会感到有些陌生,也可能你 ...

  5. 于数据交换格式XML和JSON的比较

    目前,在web开发领域,主要的数据传输格式有XML和JSON,对于XML相信每一个web developer都不会感到陌生:相比之下,JSON可能对于一些新步入开发领域的新手会感到有些陌生,也可能你之 ...

  6. Ajax--概述、xhr对象的常用属性和方法、xhr的常用事件、xhr对象发送POST请求、xhr对象发送GET请求、xhr对象的兼容性问题、数据交换格式(XML、JSON)

    一.概述 1.1 发展历程 在开始之前先来看一下Ajax的工作原理吧,如下图所示: Ajax全称Asynchronous javascript and xml(异步 JavaScript 和 XML) ...

  7. 数据交换格式 - PB(protocol buffer),xml,json,array

    目录 PB PB vs xml PB vs json json json vs xml xml 数组 PB 扩充容易, 二进制 序列化简单 ProtocolBuffers-Google's data ...

  8. 前端与服务器通讯的数据交换格式XML 、JSON

    数据交换格式 就是服务器端与客户端之间进行数据传输与交换的格式. 前端领域,经常提及的两种数据交换格式分别是XML(使用较少)和JSON(主要) XML XML和HTML的区别 都是标记语言,但是,他 ...

  9. 常用的数据交换格式有哪些_Linux后台开发6大常用的开源库,让你在同行中脱颖而出...

    后台开发,语言主要是 c 和 c++ , 这里简单罗列一下工作中用的很频繁的那些开源软件 1. OpenSSL openssl OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法.常用的密钥 ...

最新文章

  1. 基于i.MX RT1060的可编程视觉模块
  2. 欧锦赛球星谱:帕克领豪阵 诺天王对决加索尔
  3. GridView列值绑定
  4. 提交自己开发的MR作业到YARN上运行的步骤
  5. mybatis简单案例源码详细【注释全面】——实体层(User.java)
  6. sorl6.0+jetty+mysql搭建solr服务
  7. LVM的创建扩展缩减与删除
  8. Javascript七种继承方式
  9. 机器学习中为什么需要梯度下降_机器学习 —— 多元梯度下降
  10. 《中国人工智能学会通讯》——7.10 总结和展望
  11. GJB 5000B-2021下载-见文章结尾
  12. MySQL数据库左右连接
  13. 共享锁和排他锁的区别
  14. 【空间统计之六】点数据集方向分布统计(标准差椭圆)
  15. JDK下载和配置以及java的第一个程序:“Hello Java”
  16. 手机安装python的步骤_手机安装python环境
  17. 什么叫DMZ区?DMZ区有什么作用?应该怎样构建DMZ?
  18. 如何从其他平台快速引流到微信?
  19. 最新Linux版本 jira6.3.6安装汉化破解以及数据迁移
  20. 动画: 快速排序 | 如何求第 K 大元素?

热门文章

  1. hive项目之微博ETL项目总结分析
  2. 趣闲赚~~~~~~青龙脚本
  3. web前端html5+css3学习笔记(3)——标签
  4. 【经典算法实现 44】理解二维FFT快速傅里叶变换 及 IFFT快速傅里叶逆变换(迭代法 和 递归法)
  5. linux 内存告警门限,H3C LA系列无线网关 配置指导(V7)-R0304-6W100_基础配置指导_设备管理配置-新华三集团-H3C...
  6. 7_文件系统与磁盘分区
  7. 2001-2019年300多个城市进口额、出口额、进出口额汇总
  8. 第十三届蓝桥杯省赛 python B组复盘
  9. 算法到底该怎么学?算法数据结构Java编程超全干货!(ACM金牌选手分享超牛学习路径~)...
  10. 服务器 开机时间 linux,查看Linux系统启动时间和运行时间