ios使用NSXMLParser类和 GDataXMLNode解析XML
2016-11-03 18:41
281 查看
解析的基本概念
所谓“解析”:从事先规定好的格式串中提取数据
解析的前提:提前约定好格式、数据提供方按照格式提供数据、数据获取方按照格式获取数据
iOS开发常见的解析:XML解析、JSON解析
一、XML数据结构
XML数据结构基本概念
XML:Extensible Markup language (可扩展标记语言),主流格式之一,可以用来存储和传输数据格式之一,可以用来存储和传输数据
XML数据格式的功能
1、数据交换
2、内容管理
3、用作配置文件
XML数据结构的语法
1、声明
2、节点使用一对标签表示
3、根节点是起始节点,只有一个。节点可以嵌套
4、节点可以有值,存储在一对标签中
如何进行XML解析
有以下两种方法:
1、SAX解析
SAX:Simple API for XML .基于事件驱动的解析方式,逐行解析数据。(采用协议回调机制)
SAX解析XML,是基于事件通知的模式,一边读取XML文档一边处理,不必等整个文档加载完之后才采取操作,SAX解析器会检测整个XML树形结构,你的代码会控制它在哪里停止,使用哪些数据之类的事情。就是说,SAX可控制性强,占用内存小,适用于提取部分数据。当在读取解析过程中遇到需要处理的对象,会发出通知对其进行处理,如果XML格式在某一处出现错误,前面的数据会被提取出来,错误后面数据的就显示不出来。
NSXMLParse类是iOS自带的XML解析类。采用SAX方式解析数据
解析过程由NSXMLParserDelegate协议方法回调
解析过程:开始标签->取值->结束标签->取值
代码的实现过程是,首先我们建立一个XML文档,并引入文件,如下:
其次我们建立一个表格试图控制器(TableViewController)
定义一个私有属性数组datasource用来存储模型数据和startTag属性用来暂存起始标签
同时在方法ViewDidLoad里面获取文件数据并指定代理//解析器协议,同时为对应的重用标识符注册单元格的类型
NSXMLParserDelegate 解析器协议里面有如下方法:
当XML在逐个解析文件数据时,由于起始标签和结束标签名字一样,当解析到结束标签时,为了避免解析到的结束标签后面的内容将模型对象中的相应的属性覆盖,在解析结束标签的方法内部将起始标签置为nil
在每个方法内部我们同时打印了一下方法名,这样我们就可以在输出端清晰的看到方法的执行顺序,
同时在表格的设置方法内部建立重建机制
在设置相应的行数和分区,我们就可以在模拟器上显示出如下结果:
2、DOM工具解析
DOM:Document Object Model (文档对象模型)。解析时需要将XML文件整体读入,并且将XML结构化成树状,使用时再通过树状结构读取相关数据,查找特定节点,然后对节点进行读或写。他的主要优势是实现简单,读写平衡;缺点是比较占内存,因为他要把整个xml文档都读入内存,文件越大,这种缺点就越明显。当文件内容出现错误时,在输入框内会标记出错误的位置
GDataXMLNode是Google提供的开元XML解析类,对libxml2.dylib进行了Objective-C的封装,因此在使用GDataXML之前,你需要先导入libxml2。
iOS中包含一个C语言的动态链接库libxml2.dylib,解析速度比NSXMLParser快
类库下载地址:github下载地址
csdn下载地址
使用时的注意事项:
1.导入动态链接库libxml2.dylib 或者libxml2.tdb
2.在工程的“Build Settings”页中找到“Header Search Path”项,添加/usr/include/libxml2"到路径中
3.搜索Other Linker Flags,添加-lxml2(这一步最好加上,否则会出问题)
4.在buildPhases->Compile Sources 找到GDataXMLNode.m 在其后双击空白位置,添加上-fno-objc-arc 此方法是将工程的非ARC的类编程ARC的,如果是非ARC工程 ,则将其改成-fojc-arc即可
demo地址: [zip文件] iOS xml解析和json解析demo
友情链接: iOS 使用NSJSONSerialization类进行json解析
所谓“解析”:从事先规定好的格式串中提取数据
解析的前提:提前约定好格式、数据提供方按照格式提供数据、数据获取方按照格式获取数据
iOS开发常见的解析:XML解析、JSON解析
一、XML数据结构
XML数据结构基本概念
XML:Extensible Markup language (可扩展标记语言),主流格式之一,可以用来存储和传输数据格式之一,可以用来存储和传输数据
XML数据格式的功能
1、数据交换
2、内容管理
3、用作配置文件
XML数据结构的语法
1、声明
2、节点使用一对标签表示
3、根节点是起始节点,只有一个。节点可以嵌套
4、节点可以有值,存储在一对标签中
如何进行XML解析
有以下两种方法:
1、SAX解析
SAX:Simple API for XML .基于事件驱动的解析方式,逐行解析数据。(采用协议回调机制)
SAX解析XML,是基于事件通知的模式,一边读取XML文档一边处理,不必等整个文档加载完之后才采取操作,SAX解析器会检测整个XML树形结构,你的代码会控制它在哪里停止,使用哪些数据之类的事情。就是说,SAX可控制性强,占用内存小,适用于提取部分数据。当在读取解析过程中遇到需要处理的对象,会发出通知对其进行处理,如果XML格式在某一处出现错误,前面的数据会被提取出来,错误后面数据的就显示不出来。
NSXMLParse类是iOS自带的XML解析类。采用SAX方式解析数据
解析过程由NSXMLParserDelegate协议方法回调
解析过程:开始标签->取值->结束标签->取值
代码的实现过程是,首先我们建立一个XML文档,并引入文件,如下:
其次我们建立一个表格试图控制器(TableViewController)
定义一个私有属性数组datasource用来存储模型数据和startTag属性用来暂存起始标签
同时在方法ViewDidLoad里面获取文件数据并指定代理//解析器协议,同时为对应的重用标识符注册单元格的类型
NSXMLParserDelegate 解析器协议里面有如下方法:
当XML在逐个解析文件数据时,由于起始标签和结束标签名字一样,当解析到结束标签时,为了避免解析到的结束标签后面的内容将模型对象中的相应的属性覆盖,在解析结束标签的方法内部将起始标签置为nil
在每个方法内部我们同时打印了一下方法名,这样我们就可以在输出端清晰的看到方法的执行顺序,
同时在表格的设置方法内部建立重建机制
在设置相应的行数和分区,我们就可以在模拟器上显示出如下结果:
2、DOM工具解析
DOM:Document Object Model (文档对象模型)。解析时需要将XML文件整体读入,并且将XML结构化成树状,使用时再通过树状结构读取相关数据,查找特定节点,然后对节点进行读或写。他的主要优势是实现简单,读写平衡;缺点是比较占内存,因为他要把整个xml文档都读入内存,文件越大,这种缺点就越明显。当文件内容出现错误时,在输入框内会标记出错误的位置
GDataXMLNode是Google提供的开元XML解析类,对libxml2.dylib进行了Objective-C的封装,因此在使用GDataXML之前,你需要先导入libxml2。
iOS中包含一个C语言的动态链接库libxml2.dylib,解析速度比NSXMLParser快
类库下载地址:github下载地址
csdn下载地址
使用时的注意事项:
1.导入动态链接库libxml2.dylib 或者libxml2.tdb
2.在工程的“Build Settings”页中找到“Header Search Path”项,添加/usr/include/libxml2"到路径中
3.搜索Other Linker Flags,添加-lxml2(这一步最好加上,否则会出问题)
4.在buildPhases->Compile Sources 找到GDataXMLNode.m 在其后双击空白位置,添加上-fno-objc-arc 此方法是将工程的非ARC的类编程ARC的,如果是非ARC工程 ,则将其改成-fojc-arc即可
demo地址: [zip文件] iOS xml解析和json解析demo
友情链接: iOS 使用NSJSONSerialization类进行json解析
相关文章推荐
- 第三方库GDataXMLNode的配置及使用(XML解析)
- iOS--XML三种解析方法( XMLDictionary)、(GDataXMLNode)、(NSXMLParser)
- 【iOSXML解析】之:GDataXMLNode方法解析案例
- iOS网络数据解析--XML解析详解(GDataXMLNode&原生NSXMLParser)
- 文件学习IOS学习:常用第三方库(GDataXMLNode:xml解析库)
- IOS学习:常用第三方库(GDataXMLNode:xml解析库)
- XML解析:第三方库GDataXMLNode的使用
- ios解析xml的两种方法,NSXMLParser和第三方库GDataXMLNode还有json数据的解析
- iOS之GDataXMLNode对XML解析
- iOS 用GDataXMLNode创建和解析XML
- iOS 用GDataXMLNode创建和解析XML
- XML数据解析(GDataXMLNode的使用)
- IOS学习:常用第三方库(GDataXMLNode:xml解析库)
- IOS学习:常用第三方库(GDataXMLNode:xml解析库)
- iOS数据解析,XML(SAX,DOM - GDataXMLNode)
- IOS学习:常用第三方库(GDataXMLNode:xml解析库)
- iOS的XML解析库:GDataXMLNode
- 第三方设置XML解析:第三方库GDataXMLNode的使用
- iOS 用GDataXMLNode创建和解析XML
- 【iOS-cocos2d-X 游戏开发之九】Cocos2dx利用CCSAXParser解析xml数据&CCMutableDictionary使用与注意!