xml解析代理NSXMLParserDelegate的使用步骤

本文介绍了使用NSXMLParserDelegate解析XML的五个关键步骤,包括parserDidEndDocument处理数据,didStartElement获取节点,foundCharacters读取节点内容,didEndElement节点结束时的操作,以及parseErrorOccurred处理解析错误。在代理中定义成员变量通常根据数据结构来,例如使用数组存储模型对象,用_elementstr暂存节点值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


[1]使用NSXMLParser对象的成员A存放本地xml文件的二进制内容
[2]创建一个代理,遵守NSXMLParserDelegate协议,代替A完成解析
[3]A执行解析方法,解析方法中有全部调用过程,但是被封闭了
[4]要完成这个工作,首先从代理的定义方法入手
代理要实现的代理方法解释:
1、
- (void)parserDidStartDocument:(NSXMLParser *)parser;
这是起点,在这里执行初始化操作
2、

- (void)parserDidEndDocument:(NSXMLParser *)parser;

这是终点,在这里处理数据

3、

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict

开始读区节点,一个<></>这种标示对就是一个节点

这个方法是开始获取一个节点的内容,

 参数parser是携带需解码xml二进制数据的委托者

参数elementName是当前解析xml的某个节点的键(键值对中的键)

参数namespaceURI和qName返回的是当前xml所在的域名+路径

参数attributeDict返回的是当前节点的属性,写在第一个<>里的内容

4、

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

这个方法是被循环调用的,作用是返回每一个节点的内容(键值对中的值)

5、

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

这个方法是终点方法,此时,代理类中定义的资源成员已经被解析完毕,直接操作即可

6、

- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError

解析出错,清理所有得到的解析结果


问题1:

如何知道在代理中定义什么成员变量?

一半取出的数据如果是有规律的多个数据,代理中一般定义数组成员变量,这个数组成员变量中存放的是每一个大键的模型,(我们需要把xml中的每一个大键变成一个对象,每一个小键变成一个大键对象的成员属性,这样就分析出来我们需要什么定义的成员变量是什么了)

_elementstr成员变量的作用是暂存当前节点标签的字串值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值