IOS开发之网络编程(XML的解析方式)

XML的解析方式

  • SAXIOS上解析,速度快,内存占用小,只读
  • DOMmac上的解析方式,iOS无法直接使用,解析过程中内存占用大,读写

SAX的解析步骤

加载xml数据 -> 找开始节点(包括节点的属性) -> 找节点之间的内容 -> 找结束节点 -> 直到最后一个节点,解析结束

//加代理协议<NSXMLParserDelegate>
//NSURLConnection连接中返回的data
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
//设置代理,真正的解析在代理里面
parser.delegate = self;
//开始代理方法,开始解析
[parser parse];
//重写代理方法
//解析过程 解析的过程将其转为模型
Video对象
 属性 name
 属性 length
//1 开始解析文档
-(void)parserDidStartDocument:(NSXMLParser *)parser{
	NSLog(@"start!");
};

//2 找开始节点
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict{
//elementName 节点名字
//attribute 标签的属性
if([elementName isEqualToString:@"video"])
{	
	self.currentVideo = [[Video alloc]init];
	[self.videos addObject:self.currentVideo];
}
};

//3 节点之间的内容
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
	//拼接字符串
	[self.mString appendString:string];
};

//4 找结束节点
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
	if(![elementName isEqualToString:@"video" && ![elementName isEqualToString:@"videos"]]){
	//KVC记得property改copy,网络模型记得copy
	[self.currentVideo setValue:self.mString forKey:elementName];
	}
	//记得清空
	[self.mString setString:@""];
}

//5 结束解析文档
-(void)parserDidEndDocument:(NSXMLParser *)parser{
};

//6 解析出错
-(void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError{
};

过程大概是
2 开始节点 video	
2 开始节点 name
3 内容 勒布朗
3 内容 詹姆斯
4 结束节点 name

2 开始节点 length
3 内容 500
4 结束节点 length

DOM的解析步骤

  • DOM方式的解析 Document Object ModelDOM文档对象模型(文档模型)
  • 之前的SAX方式只能读取XMLDOM可以修改,添加删除节点
  • iOS默认不支持DOM解析(不支持 NSXML这个类)
  • 一次性把XML全部加载到内存,内存消耗大,适合读写比较小的XML文件
  • 在OS解析DOM的话需要第三方框架GData/KissXML(XMPP中使用此框架)

DOM的第三方框架GData/KissXML

  • 需要根据头文件的要求配置
#import "GDataXMLNode.h"

//解析数据
GDataXMLDocument *document = [[GDataXMLDocument alloc]initWithData:data error:NULL];
//获取XML文档的根元素(标签)
GDataXMLElement *rootElement = document.rootElement;
//对象集合
NSMutableArray *mArray = [NSMutableArray arrayWithCapacity:10];
//遍历video节点
for(GDataXMLElement *element in rootElement.children){
	//创建对象
	Video *video = [[Video alloc]init];	
	//给对象的属性赋值
	//遍历属性
	for(GDataXMLNode *attr in element.attributes){
	[video setValue:attr.stringValue forKey:attr.name];
	}
	//遍历子标签
	for(GDataXMLElement *subElement in element.children){
	[video setValue:subElement.stringValue forKey:subElement.name];
	}
	[mArray addObject:video];
}

//属性
{video type="mp4"}
//标签
{name}James{name/}
{length}500{length/}
{video/}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Swift全解析-新式iOS实战开发》是一本电子书,主要针对Swift语言和iOS开发进行详细的解析和讲解。该书致力于帮助读者掌握Swift语言的特性和iOS开发的基础知识,以及如何应用它们进行实际项目的开发。 该书的内容分为多个章节,从Swift的基础语法开始,逐步介绍了Swift的各种高级特性和常用框架。读者可以学习如何使用Swift语言来编写iOS应用程序,并了解如何使用Core Data、UIKit和其他重要的框架来创建用户界面、处理数据、进行网络通信等等。 该书的特点是详细而全面,通过大量的示例代码和实际项目案例,帮助读者更好地理解和应用所学知识。同时,书中还包括了一些实用的技巧和最佳实践,帮助读者提高代码质量和开发效率。 此外,该书还提供了一些额外的学习资源和链接,以帮助读者深入了解和学习更多的iOS开发知识。读者可以通过这些资源进一步扩展和巩固所学的内容。 总而言之,《Swift全解析-新式iOS实战开发》是一本适合有一定编程基础,想要学习Swift语言和iOS开发的人士阅读的电子书。通过系统而全面的内容,读者可以获得丰富的知识和实践经验,为自己的iOS开发之路打下坚实的基础。 ### 回答2: 《Swift全解析:新式iOS实战开发》是一本电子书,旨在帮助读者全面了解Swift编程语言以及在iOS开发中的应用。这本书采用了全新的教学方法和实战项目,为读者提供了一种系统学习Swift和实践iOS开发的途径。 首先,本书对Swift编程语言进行了全面详尽的介绍。无论是从基础语法到高级特性,还是从常用API到面向对象设计模式,本书都进行了深入的讲解和示范。读者通过系统地学习Swift语言,可以快速上手iOS开发,并且能够灵活运用各种语言特性提高开发效率。 其次,本书以实战项目为主线,通过搭建一个完整的iOS应用来帮助读者加深对Swift开发的理解。每个实战项目都紧跟着一系列的教学步骤和示例代码,读者可以跟随着书本进行实践,逐步掌握iOS开发的过程和技巧。这种以实践为基础的学习方式,能够帮助读者更好地理解和运用所学内容。 此外,本书还介绍了一些实用的开发工具和技巧,比如使用Xcode进行调试和测试、集成第三方框架和库、发布应用到App Store等。这些内容能够帮助读者更好地提升开发效率和应用质量,从而更好地应对实际的开发需求。 总的来说,《Swift全解析:新式iOS实战开发》是一本详尽、实用、有趣的电子书,适合那些想要系统学习Swift语言和iOS开发的读者。通过阅读本书,读者能够从零开始学习,掌握iOS开发的核心知识和实践技巧,为日后的应用开发打下坚实的基础。 ### 回答3: 《Swift全解析新式iOS实战开发》是一本关于Swift语言和iOS实战开发的电子书。这本书通过详细地解析Swift语言的各种特性和语法,并结合实战项目的开发经验,向读者介绍了如何使用Swift语言进行iOS开发。 这本电子书的内容非常丰富,包括Swift语言的基础知识、面向对象编程、函数式编程、UI设计、网络请求、数据存储等多个方面。每一章节都以实战项目为背景,结合代码示例和详细的解释,帮助读者理解和掌握相关知识。 通过阅读这本书,读者可以系统地学习和掌握Swift语言的特性和用法,了解iOS开发的各个方面,并学会如何将Swift语言应用于实际项目开发中。无论是初学者还是有一定开发经验的人员,都可以从书中获取到丰富的知识和实战经验。 此外,这本电子书还具有很强的实践性和针对性。书中提供了大量实战项目的案例,通过跟随案例的步骤进行开发,读者不仅可以学习相关的知识,还可以通过实际动手实现项目,加深对知识的理解和运用能力。 总结来说,《Swift全解析新式iOS实战开发》是一本对于想要学习iOS开发并使用Swift语言的读者来说非常有价值的电子书。它全面介绍了Swift语言和iOS开发的各个方面,并提供了丰富的实战项目案例,帮助读者快速入门并掌握相关技能。对于想要系统学习和应用Swift语言的读者来说,这本电子书绝对是一本不可缺少的参考资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值