iOS核心笔记——网络编程-XML

1、XML简介:

?了解:XML的全称是Extensible Markup Language,翻译为“可扩展标记语言”;与JSON一样,也是常用的一种用于交互的数据格式;一般也称为XML文档(XML Document)。

XML文档示例


2、XML语法介绍:

2-1、XML-文档声明:


2-2、XML-元素(Element):


2-3、XML-元素注意:


2-4、XML-属性(Attribute):


3、XML解析方案:

?了解:XML有2种解析方式:①DOM:一次性将整个XML文档加载进内存,比较适合解析小文件;②SAX:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件。


3-1、XML解析方案:


3-2、XML解析方式选择:


4、NSXMLParser解析:

?了解:NSXMLParser是基于SAX方式解析XML。


4-1、NSXMLParser解析步骤:
  • 步骤一:创建NSXMLParser解析器,一个NSXMLParser对象代表一个解析器;

    1.// 6. 创建解析器2.NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];

  • 步骤二:设置解析器的代理对象,代理对象遵守<NSXMLParserDelegate>协议、实现相应的解析方法;
    1.// 7. 设置代理2.parser.delegate = self;

  • 步骤三:解析器调用parse方法开始解析。
    1.// 8. 开始解析2.[parser parse];

4-2、NSXMLParser代理方法:


4-3、示例程序:
1.#pragma mark - NSXMLParserDelegate2./**3. 开始解析XML文档, 只会调用一次4. */5.- (void)parserDidStartDocument:(NSXMLParser *)parser{6.    NSLog(@"%s", __func__);7.}8.9./**10. 开始解析XML元素, 当XML文件中有多少个元素便会调用多少次11. */12.- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict{13.    NSLog(@"%s", __func__);14.15.    // 1. 替换属性名16.    [HHMovie mj_setupReplacedKeyFromPropertyName:^NSDictionary *{17.        return @{@"id" : @"ID"};18.    }];19.20.    // 2. 判断是否为根元素, 因为根元素的内容为子元素; 所以, 无法转换为模型21.    if ([elementName isEqualToString:@"videos"]) {22.        return ;23.    }24.25.    // 3. 创建模型26.    HHMovie *movie = [HHMovie mj_objectWithKeyValues:attributeDict];27.28.    // 4. 添加到模型数组29.    [self.movies addObject:movie];30.}31.32./**33. 解析完XML中的元素34. */35.- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{36.    NSLog(@"%s", __func__);37.}38.39./**40. 解析完整个XML文档, 最后一次调用41. */42.- (void)parserDidEndDocument:(NSXMLParser *)parser{43.    NSLog(@"%s", __func__);44.45.    // 1. 主线程中刷新表格46.    dispatch_async(dispatch_get_main_queue(), ^{47.        [self.tableView reloadData];48.    });49.}

5、GDataXML

5-1、解析环境配置:


5-2、GDataXML常用类:


5-3、示例程序:
1.    // MARK: - GDataXMLNode解析XML文件2.    // 1. 创建XML文档对象, 一个GDataXMLDocument对象就代表着一个XML文档3.    GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];4.5.    // 2. 获取根元素6.    GDataXMLElement *rootElement = [doc rootElement];7.8.    // 3. 根据元素名获取根元素中所有子元素9.    NSArray *elements = [rootElement elementsForName:@"video"];10.11.    // 4. 遍历12.    [elements enumerateObjectsUsingBlock:^(GDataXMLElement *element, NSUInteger idx, BOOL * _Nonnull stop) {13.        // 5. 创建模型14.        HHMovie *movie = [[HHMovie alloc] init];15.16.        // 6. 根据元素中的属性名获取属性值17.        movie.id = [element attributeForName:@"id"].stringValue.integerValue;18.        movie.image = [element attributeForName:@"image"].stringValue;19.        movie.length = [element attributeForName:@"length"].stringValue;20.        movie.url = [element attributeForName:@"url"].stringValue;21.        movie.name = [element attributeForName:@"name"].stringValue;22.23.        // 7. 添加到模型数组24.        [self.movies addObject:movie];25.26.        // 8. 刷新表格27.        dispatch_async(dispatch_get_main_queue(), ^{28.            [self.tableView reloadData];29.        });30.    }];

时间: 2024-10-13 02:43:22

iOS核心笔记——网络编程-XML的相关文章

iOS核心笔记——网络编程-网络安全

1.数据安全: 1.01 攻城利器:Charles(公司中一般都使用该工具来抓包,并做网络测试)2.注意:Charles在使用中的乱码问题,可以显示包内容,然后打开info.plist文件,找到java目录下面的VMOptions,在后面添加一项:-Dfile.encoding=UTF-83.02 数据安全的原则4. 1)在网络上"不允许"传输用户隐私数据的"明文"5. 2.)在本地"不允许"保存用户隐私数据的"明文"6.03

iOS核心笔记——网络编程-HTTPS协议

1.HTTPS的基本使用: 1.HTTPS简单说明: ?了解:HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版. ?重要:即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL. 它是一个URI scheme(抽象标识符体系),句法类同http:体系.用于安全的HTTP数据传输. ?重要:https:URL:表明它使用了HTTPS,

iOS核心笔记——网络编程-文件MIMEType

1.获取文件的MIMEType: 1-1.方式一:查看对照表 查看文件的MIMEType 1-2.方式二:发送网络请求-从响应头中获取 1. [[[NSURLSession sharedSession] dataTaskWithURL:[NSURL fileURLWithPath:@"/Users/xiaomage/Desktop/Snip20161126_238.png"] completionHandler:^(NSData * _Nullable data, NSURLRespo

iOS核心笔记——网络编程-NSURLSessionDownloadTask

1.大文件下载: 1-1.创建下载任务: 方式一:创建时同时设置代理监听下载进度: 1.-(void)downloadDelegate2.{3. //01 确定资源路径4. NSURL *url = [NSURL URLWithString:@"http://img4q.duitang.com/uploads/item/201406/09/20140609150919_ZztLd.jpeg"];5.6. //02 创建请求对象7. NSURLRequest *request = [NS

iOS核心笔记——网络编程-ASI与AFN的区别

一.底层实现: 1> AFN的底层基于OC的NSURLConnection和NSURLSession: 2> ASI的底层基于纯C语言的CFNetwork框架: 3> ASI的运行性能 高于 AFN. 二.对服务器返回的数据处理 1> ASI没有直接提供对服务器数据处理的方式,直接返回data\string: 2> AFN提供了多种对服务器数据处理的方式: JSON处理: XML处理: 其他处理. 三.监听请求的过程: 1> AFN提供了success和failure两

iOS核心笔记——网络编程-文件上传

1.文件上传: ?重要:当用户想向服务器传送客户端本地文件时,此时,需要使用POST请求方式.NSURLSessionUploadTask文件上传任务将文件传递至服务器. 1-1.技术点: ?重要:①设置请求头信息,告诉服务器本次网络请求是在向服务器传送文件:②拼接要上传的文件的数据,拼接过程中一定要严格按照文件上传格式进行,否则,文件上传将会失败. 1-2.文件上传格式: 1.设置请求头信息: ?重要:设置请求头,告诉服务器这是一次文件上传操作. 2.设置文件参数: ?重要:设置请求体,将文件

iOS核心笔记——网络编程-监控网络状态

1.AFN监控网络状态: 1.- (void)afnMonitoring2.{3. // 开始网络监控4. AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];5.6. [mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {7. NSLog(@"-----当前的网络状态---%zd&quo

IOS学习笔记 -- 网络编程

一.HTTP协议1.面试题: 聊一下HTTP协议(表达对HTTP协议的看法)* HTTP协议的全称: 超文本传输协议, 定制传输数据的规范(客户端和服务器之间的数据传输规范)* 描述HTTP协议完整的通信过程 2.通信过程1> 请求* 客户端 --> 服务器* 请求的内容a."请求行" : 请求方法\请求资源路径\HTTP协议版本GET /MJServer/login?username=123&pwd=123&method=get&type=JSON

安卓第八天笔记--网络编程二

安卓第八天笔记--网络编程二 1.网络图片查看器 /** * 网络图片查看器 * 1.获取输入的URL地址,判断是否为空 * 2.建立子线程,获取URl对象new URL(path) * 3.打开连接获取HttpURLConnection conn = (HttpURLConnection) url.openConnection(); * 4.设置连接超时时间conn.setConnectionTimeOut(5000)毫秒 * 5.设置请求方式setRequestMethod * GET或者P