GDataXMLNode:xml解析库
IOS学习:常用第三方库(GDataXMLNode:xml解析库)
解析 XML 通常有两种方式,DOM 和 SAX:
DOM解析XML时,读入整个XML文档并构建一个驻留内存的树结构(节点树),通过遍历树结构可以检索任意XML节点,读取它的属性和值。而且通常情况下,可以借助XPath,直接查询XML节点。
SAX解析XML,是基于事件通知的模式,一边读取XML文档一边处理,不必等整个文档加载完之后才采取操作,当在读取解析过程中遇到需要处理的对象,会发出通知对其进行处理。
一般在iOS平台下,比较常用的XML解析类库有如下几种:
NSXMLParser,http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSXMLParser_Class/Reference/Reference.html ,这是一个SAX方式解析XML的类库,默认包含在iOS SDK中,使用也比较简单。
libxml2,http://xmlsoft.org/,是一套默认包含在iOS SDK中的开源类库,它是基于C语言的API,所以使用起来可能不如NSXML方便。这套类库同时支持DOM和SAX解析,libxml2的SAX解析方式还是非常酷的,因为它可以边读取边解析,尤其是在从网上下载一个很大的XML文件,就可以一边下载一边对已经下载好的内容进行解析,极大的提高解析效率。
TBXML,http://www.tbxml.co.uk/TBXML/TBXML_Free.html,这是一套轻量级的DOM方式的XML解析类库,有很好的性能和低内存占用,不过它不对XML格式进行校验,不支持XPath,并且只支持解析,不支持对XML进行修改。
TouchXML,https://github.com/TouchCode/TouchXML,这也是一套DOM方式的XML解析类库,支持XPath,不支持XML的修改。
KissXML,http://code.google.com/p/kissxml/,这是一套基于TouchXML的XML解析类库,和TouchXML相比,支持了XML的修改。
TinyXML,http://www.grinninglizard.com/tinyxml/,这是一套小巧的基于C语言的DOM方式进行XML解析的类库,支持对XML的读取和修改,不直接支持XPath,需要借助另一个相关的类库TinyXPath才可以支持XPath。
GDataXML,http://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/XMLSupport/,这是一套Google开发的DOM方式XML解析类库,支持读取和修改XML文档,支持XPath方式查询。
- <root>
 - <name value="wusj"/>
 - <age>24age>
 - root>
 
- NSString *xmlPath = [[NSBundlemainBundle] pathForResource:@"test"ofType:@"xml"];
 - NSString *xmlString = [NSStringstringWithContentsOfFile:xmlPath encoding:NSUTF8StringEncodingerror:nil];
 - GDataXMLDocument *xmlDoc = [[GDataXMLDocument alloc] initWithXMLString:xmlString options:0 error:nil];
 - GDataXMLElement *xmlEle = [xmlDoc rootElement];
 - NSArray *array = [xmlEle children];
 - NSLog(@"count : %d", [array count]);
 - for (int i = 0; i < [array count]; i++) {
 - GDataXMLElement *ele = [array objectAtIndex:i];
 - // 根据标签名判断
 - if ([[ele name] isEqualToString:@"name"]) {
 - // 读标签里面的属性
 - NSLog(@"name --> %@", [[ele attributeForName:@"value"] stringValue]);
 - } else {
 - // 直接读标签间的String
 - NSLog(@"age --> %@", [ele stringValue]);
 - }
 - }
 
//DOM 解析
- (IBAction)dommethord:(id)sender {
//1,拿到文件
NSString *path = [[NSBundle mainBundle] pathForResource:@"xml" ofType:@"txt"];
//2,根据路径拿到数据
NSData *data = [NSData dataWithContentsOfFile:path];
//3,创建解析对象
GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];
//4,获取根
GDataXMLElement *rootElement = document.rootElement;
//初始化数组
_allDataMutaArray = [NSMutableArray array];
_allDataMutaString = [NSMutableString string];
//5,获取根节点下的 所有子节点
NSArray *stuArrayElement = rootElement.children;
//6,遍历每一个Student
for (GDataXMLElement *stuElement in stuArrayElement) {
//每遍历一次就 创建一个模型
Student *stu = [Student new];
//7,遍历子节点
for (GDataXMLElement *stuSubElement in stuElement.children) {
//8,使用KVC的方式 对模型对象进行复制
[stu setValue:stuSubElement.stringValue forKey:stuSubElement.name];
//打印
NSLog(@"%@ %@ ",stuSubElement.name,stuSubElement.stringValue);
[_allDataMutaString appendString:stuSubElement.stringValue];
}
//将添加好的模型放入数组中
[_allDataMutaArray addObject:stu];
[stu release];
NSLog(@"----%lu",stu.retainCount);
}
NSLog(@" 数据项 %@",_allDataMutaArray);
_textFieldView.text = _allDataMutaString;
[document release];
}
GDataXMLNode:xml解析库的更多相关文章
- IOS学习:常用第三方库(GDataXMLNode:xml解析库)
		
IOS学习:常用第三方库(GDataXMLNode:xml解析库) 解析 XML 通常有两种方式,DOM 和 SAX: DOM解析XML时,读入整个XML文档并构建一个驻留内存的树结构(节点树),通过 ...
 - EXPAT(XML解析库)
		
一.简介 expat是一个由C语言编写的XML解析库.James Clark创建了这个库,现在是制定XML标准的W3组织的技术leader.现在的版本是2.0.2.0开始就由Clark Cooper领 ...
 - Swift XML解析库 - SwiftyXMLParser
		
经过在CocoaPods中筛选以后,发这个这个比较好用,整理出来 如果有需要可以在Pods命令端输入: pod search xml 这样会搜索出很多相关Xml的第三方库 SwiftyXMLParse ...
 - 第三方:GDataXMLNode:xml解析库--备用
		
一.GDataXMLNode说明 GDataXMLNode是Google提供的用于XML数据处理的类集.该类集对libxml2--DOM处理方式进行了封装,能对较小或中等的xml文档进行读写操作且 ...
 - Python的html和xml解析库Beautiful Soup
		
网站:http://www.crummy.com/software/BeautifulSoup/ 版权声明:本文博主原创文章,博客,未经同意不得转载.
 - iOS开发 XML解析和下拉刷新,上拉加载更多
		
iOS开发 XML解析和下拉刷新,上拉加载更多 1.XML格式 <?xml version="1.0" encoding="utf-8" ?> 表示 ...
 - XML解析器(转)
		
常见C/C++ XML解析器有tinyxml.XERCES.squashxml.xmlite.pugxml.libxml等等,这些解析器有些是支持多语言的,有些只是单纯C/C++的.如果你是第一次接触 ...
 - (最全)Xpath、Beautiful Soup、Pyquery三种解析库解析html 功能概括
		
一.Xpath 解析 xpath:是一种在XMl.html文档中查找信息的语言,利用了lxml库对HTML解析获取数据. Xpath常用规则: nodename :选取此节点的所有子节点 // : ...
 - BeautifulSoup解析库
		
解析库 解析器 使用方法 优势 劣势 Python标准库 BeautifulSoup(html, 'html.parser') 速度适中,容错能力强 老版本python容错能力差 lxml HTML解 ...
 
随机推荐
- MAC升级nodejs和npm到最新版
			
第一步,先查看本机node.js版本: node -v 第二步,清除node.js的cache: sudo npm cache clean -f 第三步,安装 n 工具,这个工具是专门用来管理node ...
 - Java 大型系统高并发大数据的处理方式
			
页面静态化 (页面层面的缓存) 缓存 (memcached.redis等,数据缓存.避免多次请求) 集群负载均衡(单机处理能力不足) 分库分表(大量数据的处理.原则分.分.分) 读写分离 队列.MQ. ...
 - [Git] Move some commits to a separate branch that I have accidentally committed to master
			
Gosh no, I just added all of these commits to master. They were thought to be peer reviewed first in ...
 - 数据驱动测试二:使用TestNG和CSV文件进行数据驱动
			
转载:https://blog.csdn.net/heart_1014/article/details/52013173 使用@DataProvider注解定义当前方法中的返回对象CSV文件(存放测试 ...
 - Format Conditions按条件显示表格记录
			
标记特定记录 DevExpress强大得确实让人觉得它别具一格!现在,我有这样一个需求,把一个表中某字段为False的记录标记出来.下面是效果(某字段的可见性为否): 实现方式 如果是以前,我写个代码 ...
 - Linux netstat命令介绍
			
关注Linux的系统状态,主要从两个角度出发,一个角度是系统正在运行什么服务(ps命令):另外一个就是有什么连接或服务可用(netstat命令).netstat还可以显示ps无法显示的.从inetd或 ...
 - 使用Json.Net解决MVC中各种json操作
			
最近收集了几篇文章,用于替换MVC中各种json操作,微软mvc当然用自家的序列化,速度慢不说,还容易出问题,自定义性也太差,比如得特意解决循环引用的问题,比如datetime的序列化格式,比如性能. ...
 - sqlalchemy结果转json
			
网上搜了下,http://blog.csdn.net/liu_xing_hui/article/details/8956107 介绍的很详细,自动一个Encoder给json的dump方法使用,能够实 ...
 - VB.NET版+三层实现登陆
			
三层已经学了一些时间了,開始认为自己能够用C#敲代码了,就用C#写了一个实现登陆的,真正再用在机房中.还是认为非常吃力的,所以.决定用vb.net敲了.以下是我用vb.net实现的登陆.能够给大家做一 ...
 - python解析命令行参数
			
常常需要解析命令行参数,经常忘记,好烦,总结下来吧. 1.Python 中也可以所用 sys 的 sys.argv 来获取命令行参数: sys.argv 是命令行参数列表 参数个数:len(sys.a ...