网络:XML 解析
来源:互联网 发布:供销大数据集团陈静红 编辑:程序博客网 时间:2024/06/04 17:56
#import "ViewController.h"#import "CZVideo.h"@interface ViewController ()<NSXMLParserDelegate>@property (nonatomic, strong) NSMutableArray *videos;@property (nonatomic, strong) CZVideo *currentVideo; // 当前解析的模型@property (nonatomic, strong) NSMutableString *elementString;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib.}- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { // NSURL NSURL *url = [NSURL URLWithString:@"http://localhost/videos.xml"]; // 创建请求 NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:1 timeoutInterval:15]; // 异步发送请求 [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc]init] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { NSXMLParser *xml = [[NSXMLParser alloc]initWithData:data]; // 设置代理 xml.delegate = self; [xml parse];// NSLog(@"response = %@ data = %@",response,data);// NSLog(@"%@",xml); }];}// 到现在还没有一个好用的第三方// 做即时通讯 xmpp (xml)#pragma mark - xml 解析代理- (void)parserDidStartDocument:(NSXMLParser *)parser { NSLog(@"1. 开始文档"); // 创建一个可变数组 self.videos = [NSMutableArray array];}// 2,3,4 是循环- (void)parser:(NSXMLParser *)parser didStartElement:(nonnull NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName attributes:(nonnull NSDictionary<NSString *,NSString *> *)attributeDict{ NSLog(@"2.发现节点%@",elementName); NSLog(@"节点属性%@",attributeDict); // 如果是video 创建模型, 并且做成属性保存起来(current) if ([elementName isEqualToString:@"video"]) { self.currentVideo = [[CZVideo alloc]init]; } // 初始化拼接字符串(没有使用懒加载)// self.elementString = [NSMutableString string]; // 使用懒加载(清掉string) [self.elementString setString:@""];}// 3. 可能调用多次- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { NSLog(@"3. 发现节点内容 = %@",string); // 拼接节点内容(可变字符串) [self.elementString appendString:string];}- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { NSLog(@"4. 结束节点 %@",elementName); // 其他的就设置模型的属性值// if ([elementName isEqualToString:@"name"]) {// self.currentVideo.name = self.elementString;// }else if ([elementName isEqualToString:@"length"]) {// self.currentVideo.length = self.elementString;// }else if ([elementName isEqualToString:@"videoURL"]) {// self.currentVideo.videoURL = self.elementString;// }else if ([elementName isEqualToString:@"imageURL"]) {// self.currentVideo.imageURL = self.elementString;// }else if ([elementName isEqualToString:@"desc"]) {// self.currentVideo.desc = self.elementString;// }else if ([elementName isEqualToString:@"teacher"]) {// self.currentVideo.teacher = self.elementString;// } if ([elementName isEqualToString:@"video"]) { // 如果是video 把模型保存到数组 [self.videos addObject:self.currentVideo]; }else if (![elementName isEqualToString:@"videos"]) { // kvc 设值 [self.currentVideo setValue:self.elementString forKey:elementName]; } // 妙果是videos 不需要做任务操作}- (void)parserDidEndDocument:(NSXMLParser *)parser { NSLog(@"5. 结束文档"); NSLog(@"%@",self.videos);}- (NSMutableString *)elementString { if (_elementString == nil) { _elementString = [NSMutableString string]; } return _elementString;}@end
#import <Foundation/Foundation.h>@interface CZVideo : NSObject@property (nonatomic, copy) NSString *name;@property (nonatomic, copy) NSString *length;@property (nonatomic, copy) NSString *videoURL;@property (nonatomic, copy) NSString *imageURL;@property (nonatomic, copy) NSString *desc;@property (nonatomic, copy) NSString *teacher;@end#import "CZVideo.h"@implementation CZVideo@end
0 0
- 网络请求XML解析XML
- Jsoup解析网络xml
- 网络解析之xml
- 网络---XML解析
- 网络:XML 解析
- 网络:XML 解析
- 网络:XML 解析封装
- xml解析网络请求
- 网络数据解析---XML
- Xml解析网络数据
- 网络解析xml
- 网络xml解析
- Android下解析网络XML
- 网络解析(XML,JSON)
- 网络数据的XML解析
- 网络数据的XML解析
- Android网络下解析XML
- android网络编程--xml解析
- 【JQuery UI】面板折叠插件——accordion
- sql
- Parameter 'xxxx' not found. Available parameters are [list] at java.util.concurrent.FutureTask
- [剑指offer]连续子数组最大和
- Linux下设置开机自启动Tomcat
- 网络:XML 解析
- C++虚函数的实现机制
- 7.5 mail_copy函数:向文件系统写入邮件
- Oracle 表外键和表唯一键的功能有哪些
- 《算法导论》读书笔记之第12章 二叉查找树
- ueditor
- PHP获取今天、昨天、明天的日期
- SpringMVC+Spring4+Mybatis3集成,开发简单Web项目
- [剑指offer]把数组排列成最小的数