网络:XML 解析
来源:互联网 发布:淘宝c店代运营 编辑:程序博客网 时间:2024/06/03 13:17
#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解析
- [IO]——纯文本复制
- bzoj 3107: [cqoi2013]二进制a+b 构造
- 扫描枪出现:"套接口连接错误"
- BZOJ3237: [Ahoi2013]连通图
- Android Bluetooth 框架简读 <2>
- 网络:XML 解析
- STL源码剖析读书笔记之vector
- Java并发编程系列之二十五:线程池
- LeetCode(32)-Binary Tree Level Order Traversal
- python reduce函数
- 在涉及到一些参数修改的时候,一定要和医院确认------运维日志32
- DuiLib(8)——Menu菜单的实现方式
- 派生类求两点间的距离、矩形的周长和面积
- hdu 1847 Good Luck in CET-4 Everybody! 博弈