网络解析数据
来源:互联网 发布:青年文明号在线网络办公协同系统 编辑:程序博客网 时间:2024/04/27 19:08
json解析数据
以下是苹果自带的数据解析的方式, 也是最常用的解析方式
// json数据特点:// 中括号表示: 数组// 大括号表示: 字典 // 1. 获取路径 NSString *path = [[NSBundle mainBundle] pathForResource:@"Teacher.json" ofType:nil]; // 2. 转化成data NSData *data = [NSData dataWithContentsOfFile:path]; // 3. 利用data转化成可变数组 或者可变字典, 是构造成数组还是可变字典, 看数据最外层是啥 NSMutableArray *dataArr = [NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingMutableContainers) error:nil]; // 注意字典中各数据的类型, 若程序崩溃, 首先查看字典中的数据类型和model中的类型是否一致 NSMutableArray *modelArr = [NSMutableArray array]; for (NSDictionary *dic in dataArr) { TeacherModel *model = [[TeacherModel alloc] init]; [model setValuesForKeysWithDictionary:dic]; [modelArr addObject:model]; }
XML数据解析
// 利用GDDataXMLNode进行DOM解析- (void)setUpGDDataXML { // 获取文件路径 NSString *path = [[NSBundle mainBundle] pathForResource:@"Teacher.xml" ofType:nil]; // 转化成NSData NSData *data = [NSData dataWithContentsOfFile:path]; // 用Data初始化一个对象, // DOM解析一次性读取文件中所有信息 // 把data转化成GDataXMLDocument这个类可以操作的对象 //error:<#(NSError **)#>: 构建一个空的错误对象// // 想得到错误信息:// NSError *error = nil;// GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data options:0 error:&error]; // 不想得到错误信息: GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil]; // 获取根节点, 以及中间所有的节点, GDataXMLElement表示节点 GDataXMLElement *rootElement = [document rootElement]; // 获取teacher的三个节点的数组 NSArray *subArray = [rootElement children]; self.dataArr = [NSMutableArray array]; // 遍历这个数组 for (int i = 0; i < subArray.count; i++) { // 相当于一个teacher GDataXMLElement *oneElement = subArray[i]; NSString *name = [self forinArr:oneElement string:@"name"]; NSString *gender = [self forinArr:oneElement string:@"gender"]; NSString *age = [self forinArr:oneElement string:@"age"]; // 初始化一个model TeacherModel *model = [[TeacherModel alloc] init]; model.name = name; model.gender = gender; model.age = age; [self.dataArr addObject:model]; }}
- (void)setUpData { // 获取xml文件路径 NSString *path = [[NSBundle mainBundle] pathForResource:@"Teacher.xml" ofType:nil]; //[[NSXMLParser alloc] initWithData:(NSData *)], NSData 是转化二进制的类 // 把该路径的文件转化成二进制 NSData *data = [NSData dataWithContentsOfFile:path]; // 创建XML分析器类 NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data]; // 设置代理 parser.delegate = self; // 注意!!!!! 要开启分析 [parser parse]; [parser release];}#pragma mark 分析器开始分析文件- (void)parserDidStartDocument:(NSXMLParser *)parser { NSLog(@"触发分析器, 已经开始分析文件"); // 初始化数组: // 1. 只初始化一次; 2. 一开始就触发 self.dataArr = [NSMutableArray arrayWithCapacity:1]; }#pragma mark 遇到节点就触发- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { //NSLog(@"遇到节点就触发"); NSLog(@"<%@>", elementName); // 判断节点是不是teacher. 若是, 就初始化一个model if ([elementName isEqualToString:@"Teacher"]) { self.model = [[TeacherModel alloc] init]; }}#pragma mark 找到内容时触发- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { NSLog(@"%@", string); // 保存字符串, 不管数是空格, 还是有用字符串 self.string = string;}#pragma mark 找到节点结束时触发- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { NSLog(@"</%@>", elementName); // 如果遇到name结束, 就将保存的字符串赋值给model if ([elementName isEqualToString:@"name"]) { self.model.name = self.string; } else if ([elementName isEqualToString:@"gender"]) { self.model.gender = self.string; } else if ([elementName isEqualToString:@"age"]) { self.model.age = self.string; } else if ([elementName isEqualToString:@"Teacher"]) { // 如果遇到Teacher, 就说明model赋值结束了 [self.dataArr addObject:self.model]; }}#pragma mark 结束分析- (void)parserDidEndDocument:(NSXMLParser *)parser { NSLog(@"结束分析");}}
0 0
- 网络请求数据解析
- 网络参数|数据解析
- 网络解析数据
- 网络数据请求解析
- 网络数据解析---XML
- Xml解析网络数据
- HttpURLConnection解析网络数据
- TouchJSON网络数据解析
- 浅析网络数据解析
- 网络数据gson解析
- xutils解析网络数据
- 网络数据解析
- 用NetPDL解析网络数据
- 网络数据的XML解析
- 网络数据的XML解析
- JOSN解析数据---从网络
- UI-json解析网络数据
- 浅议iOS网络数据解析
- 控制CPU使用率
- 黑马程序员——集合框架的使用及其注意事项
- Codeforces Round #258 (Div. 2) B. Sort the Array
- how-to: resolve crontab does not work
- 遗传算法入门
- 网络解析数据
- hdu1997汉诺塔VII
- Single boy 你距离女神,只差一个小恩爱
- WIN7+VS2012+COCOS2D-X 3.7创建的项目移植到iphone IOS步骤
- Event C++初识
- FFmpeg深入分析之零-基础
- 分析java内存问题
- 【HDOJ 1005】 CRB and His Birthday
- Invalid command 'WSGIScriptAlias', perhaps misspelled or defined by a module not included in the ser