博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS之路16-XML解析
阅读量:6802 次
发布时间:2019-06-26

本文共 2348 字,大约阅读时间需要 7 分钟。

hot3.png

  1. 了解 解析XML的方法, 是5个代理方法

            1) 开始解析文档

            2) 找开始节点

            3) 找节点之间的内容

            4) 找结束节点

            5) 结束解析文档

    2.   设置代理, 遵守协议, 实现代理方法

    3.   开始执行代理的方法,代理的方法中开始解析的

            [parser parse];

#import "ViewController.h"@interface ViewController () 
@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view, typically from a nib.        [self loadXML];}//异步请求xml- (void)loadXML {    //异步请求服务器的xml文件    NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/videos.xml"];    NSURLRequest *request = [NSURLRequest requestWithURL:url];    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue new] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {        if (connectionError) {            NSLog(@"连接错误 %@",connectionError);            return;        }        //        NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;        if (httpResponse.statusCode == 200 || httpResponse.statusCode == 304) {            //解析数据            NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];            //设置代理            parser.delegate = self;            //开始执行代理的方法,代理的方法中开始解析的            [parser parse];        }else{            NSLog(@"服务器内部错误");        }    }];}//代理方法执行  和 设置代理属性在同一个线程//代理的方法//1 开始解析文档- (void)parserDidStartDocument:(NSXMLParser *)parser {    NSLog(@"1 开始解析文档  %@",[NSThread currentThread]);}//2 找开始节点- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary
 *)attributeDict {    //elementName 节点的名称    //attributeDict  标签的属性    NSLog(@"2 找开始节点  %@--%@",elementName,attributeDict);}//3 找节点之间的内容- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {    //    NSLog(@"3 找节点之间的内容 %@",string);}//4 找结束节点- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {    //elementName 节点名称    NSLog(@"4 找结束节点 %@",elementName);}//5 结束解析文档- (void)parserDidEndDocument:(NSXMLParser *)parser {    NSLog(@"5 结束解析文档");}//6 解析出错- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {    NSLog(@"出错");}@end

转载于:https://my.oschina.net/u/2617794/blog/614375

你可能感兴趣的文章
[android]android自动化测试十之单元测试实例
查看>>
Java SecurityManager
查看>>
谁说阿里云不能跑Oracle,让驻云架构师告诉你怎么办!
查看>>
[LeetCode]*84.Largest Rectangle in Histogram
查看>>
[华为机试练习题]8.汽水瓶
查看>>
PostgreSQL 某单机插入性能测试 1200万行/s, 4.2GB/s
查看>>
taskset - retrieve or set a process's CPU affinity (affect SYSTEMTAP TIME)
查看>>
坏消息:Flutter官方暂时不会开发热更新(Code push)了。
查看>>
webpack4.x实战四,js和css独立打包
查看>>
数据一致性(一) - 接口调用一致性
查看>>
使用 core.js 解决 GraphQL Mock Server 跨域问题
查看>>
达文西,我要的是属性节点,不是属性!
查看>>
webpack4搭建的react全家桶example项目
查看>>
二十二、zookeeper实现分布式锁
查看>>
js数组去重
查看>>
分布式架构springmvc+springboot+springcloud+redis
查看>>
Nginx处理Web项目前后端分离最佳实践
查看>>
爬虫的一些知识罗列
查看>>
【前端词典】 Vue 响应式原理其实很好懂
查看>>
你不知道的JS(上册)
查看>>