你的位置:首页 > 操作系统

[操作系统]IOS 网络浅析-(五 xml解析)


  1. 可扩展标记语言
  2. 用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言
  3. 易读性高,编码手写难度小,数据量大

NS

我们所用到的NS

SAX(Simple API for

  • 只能读,不能修改,只能顺序访问,适合解析大型
  • 常应用于处理大量数据的
  • 从文档的开始通过每一节点移动,定位一个特定的节点

DOM(Document Object Model)

  • 不仅能读,还能修改,而且能够实现随机访问,缺点是解析速度慢,适合解析小型文档
  • 一般应用与小型的配置
  • 为载入到内存的文档节点建立类型描述,呈现可横向移动、潜在巨大的树型结构
  • 在内存中生成节点树操作代价昂贵

NS

1.创建NS

2.定义解析器代理

3.解析器解析

4.通过解析代理方法完成

使用

// 1. 开始解析某个元素,会遍历整个- (void)parser:didStartElement:namespaceURI:qualifiedName:attributes:// 2. 文本节点,得到文本节点里存储的信息数据,对于大数据可能会接收多次!为了节约内存开销- (void)parser:foundCharacters:// 3. 结束某个节点,存储从parser:foundCharacters:方法中获取到的信息- (void)parser:didEndElement:namespaceURI:qualifiedName: 注意:在解析过程中,上述三个方法会不停的重复执行,直到遍历完成为止 // 4. 开始解析- (void)parserDidStartDocument:// 5. 解析- (void)parserDidEndDocument:// 6. 解析出错- (void)parser:parseErrorOccurred:

 

如果一个

1.当前解析出得是对象还是元素值?

如果是对象,需要判断当前对象时第几个,是第一个对象,还是第二、第三……,如果是第N个,需要将第N-1的对象值取出保存。

如果是元素值,需要将解析出得数据,赋值给对应于对象的某个属性。

2.在解析过程中,每次读取的是一个字符,所有必须实现字符串的拼接过程,将解析出字符进行组合。用来判断当前解析出得是对象,还是元素名。或元素值。

 代码来啦———

//// ViewController.m// CX-//// Created by ma c on 16/3/18.// Copyright © 2016年 xubaoaichiyu. All rights reserved.//#import "ViewController.h"@interface ViewController ()<NS@end@implementation ViewController- (void)viewDidLoad {  [super viewDidLoad];    NSURL * url = [NSURL URLWithString:@"http://192.168.1.200/train."];    NSURLRequest * request = [NSURLRequest requestWithURL:url];    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {        //        NS* parse = [[NSdelegate = self;        [parse parse];      }];  }//打开文档-(void)parserDidStartDocument:(NS)parser{    NSLog(@"打开文档,开始解析");  }//开始查找起始标签-(void)parser:(NS)attributeDict{    NSLog(@"开始元素:%@",elementName);  NSLog(@"属性%@",attributeDict);  }//获取标签内容-(void)parser:(NSstring{    NSLog(@"获取内容:%@",string);  }//查找结束标签-(void)parser:(NS)qName{    NSLog(@"结束标签:%@",elementName);  }//查找文档结束-(void)parserDidEndDocument:(NS)parser{    NSLog(@"解析完成");  }/* 结果过长,截取部分。 2016-03-18 10:25:21.734 CX-http://Web"; } 2016-03-18 10:25:21.736 CX-*/@end