AFN如何获取并解析XML
来源:互联网 发布:淘宝客服转接设置 编辑:程序博客网 时间:2024/06/05 09:33
AFN框架获取并解析XML数据的流程
流程介绍
我的运行环境:xcode8,模拟器:iPhone6s
今天遇到一个问题,我通过网络接收到XML数据,需要将XML数据解析。
首先AFN需要加载一下XML解析器,然后做网络请求,把参数传进去,然后我们获取到的responseObject是NSXMLParser类型。
接着我们需要解析NSXMLParser数据,我们要设置NSXMLParserDelegate代理,设置一个全局的bills数组,同时设置一个bill类,获取的数据在解析后将bill放入bills里面。期间通过elementName来传输数据,目的是在- (void)parser:(NSXMLParser )parser foundCharacters:(NSString )string中做处理获取。
代码解析
1,整个AFN的请求过程代码
- (void)loadData{ // TEST URL NSDictionary *params = [self generateRequestParams]; NSString *url = @"http://localhost:5000/?user_id=8585E3F1-1819-41E0-8FED-0954F004C79C&token=C9F31C76-5CDF-490A-9E8B-ECEB5D80FD5D"; AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager]; // XML形式解析服务器 mgr.responseSerializer = [AFXMLParserResponseSerializer serializer]; [mgr GET:url parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { // XMLParser // 1.根据需要解析的XML数据, 创建NSXMLParser对象(这里直接将responseObject赋值) NSXMLParser *parser = responseObject; // 2.设置代理, 通过代理方法告诉NSXMLParser, 需要获取哪些元素和哪些属性 parser.delegate = self; // 3.开始解析 [parser parse]; self.draftBillTableView.bills = self.bills; } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { [MBProgressHUD showError:@"网络错误"]; }];}
2,XML 的解析过程
#pragma mark - NSXMLParserDelegate#pragma mark - 开始解析- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict{ self.currentElement = elementName; if([self.currentElement isEqualToString:@"data"]){ self.bill = [[CZBill alloc] init]; }}#pragma mark - 获取节点内容- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ if([self.currentElement isEqualToString:@"type"]) self.bill.type = [string intValue]; else if([self.currentElement isEqualToString:@"date"]) self.bill.date = [self stringToDate:string]; else if([self.currentElement isEqualToString:@"money"]) self.bill.money = string; else return;}#pragma mark - 结束解析- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ if ([elementName isEqualToString:@"data"]) { [self.bills addObject:self.bill]; } self.currentElement = nil; [self.draftBillTableView reloadData];}
附我的XML数据
<data> <type>0</type> <money>5000</money> <date>1995-03-16 11:08</date></data>
0 0
- AFN如何获取并解析XML
- Android如何获取asset下的xml文件,并解析
- 网上获取xml并解析
- AFN 获取数据,数据解析:JSON 介绍
- 获取服务器的xml文件并解析
- Cocoa 通过网络获取xml文件并解析
- iOS 获取xml文档并解析(使用GDataXML)
- Android 获取并解析网络XML与数据上传
- Android网络编程-----从服务器端获取xml数据并解析
- Android学习(48) -- 获取xml文件并解析.
- 【Android基础知识】网络获取Xml文件并解析
- 从请求中获取xml内容并解析成map
- Android—(获取并解析xml和Json)
- java解析xml文件并获取子节点
- 如何解析assets目录下的xml文件,,并展示
- 如何解析sd中的xml文件,并展示
- 如何创建XML文件并获取其中某一节点值
- 生成xml并解析
- 《深度探索C++对象模型》:Data member的布局
- mysql-开发环境为VS2013的嵌入式mysql
- poj3281——Dining(网络流+拆点)
- (笔记)运算符和表达式
- abs()与fabs()
- AFN如何获取并解析XML
- Java获取客户端ip以及根据ip查询到相应的ip地址
- Codeforces Round #347 (Div. 1) E
- 12、Java入门—将一数组乱序排列的三种方法 (快速洗牌的小算法)
- 对话框显示加载的滑动图片
- Android开发需要掌握的技能点总结(下)
- Web——域名
- jquery介绍
- CodeForces - 237C Primes on Interval 【二分】