[TwistedFate]XML JSON数据结构解析
来源:互联网 发布:部落冲突骷髅药水数据 编辑:程序博客网 时间:2024/05/19 13:09
XML数据解析
SAX解析
simple API for XML
解析xml数据
- (void)xmlParserUpData{// 利用的是系统的NSXMLParser// xml分析类// 以驱动事件进行xml的解析(利用触发得的代理方法解析)// 特点: 逐行解析// 获取路径 NSString *path = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"xml"]; // 创建要分析的二进制文件 NSData *data = [NSData dataWithContentsOfFile:path]; // 创建分析人 NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data]; // 驱动事件(设置代理) parser.delegate = self; // 开始分析 [parser parse]; [parser release];}
NSXMLParser代理方法实现
// 数组(保存model)// model保存节点中间的 值 (字符串)// 已经开始分析文件- (void)parserDidStartDocument:(NSXMLParser *)parser{ self.dataArray = [NSMutableArray array]; NSLog(@"已经开始分析文件");}// 已经开始遇到节点- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ // 遇到student节点时初始化student if ([elementName isEqualToString:@"Student"]) { self.stu = [[Student alloc] init]; }// NSLog(@"<%@>",elementName);// NSLog(@"已经开始遇到节点");}// 发现字符串- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ self.str = string;// NSLog(@"%@",string);// NSLog(@"发现字符串");}// 遇到结束节点- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ if ([elementName isEqualToString:@"name"]) { self.stu.name = self.str; }else if ([elementName isEqualToString:@"gender"]){ self.stu.gender = self.str; }else if ([elementName isEqualToString:@"age"]){ self.stu.age = self.str; }else if([elementName isEqualToString:@"motto"]){ self.stu.motto = self.str; }else if([elementName isEqualToString:@"Student"]){ [self.dataArray addObject:self.stu]; [_stu release]; }// NSLog(@"</%@>",elementName);// NSLog(@"已经遇到结束节点");}// 结束文件分析- (void)parserDidEndDocument:(NSXMLParser *)parser{ // 这是装完所有的model NSLog(@"%@",self.dataArray); NSLog(@"已经结束文件分析");}
GDataXMLNode第三方类库解析(Dom解析)
引入谷歌的第三方类库GDataXMLNode需要引入系统框架libxml2
1. 工程->General-> Linked FrameWorks and Libraries添加;或者在工程->Build Phases->Link Binary With Libraries下添加
2. 工程->Build Settings->Search Paths->Header Search Paths添加路径 /usr/include/libxml2
- (void)GDataXMLNodeUpData{// 获取文件路径 NSString *path = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"xml"]; // 创建一个data对象 NSData *data = [NSData dataWithContentsOfFile:path]; // 创建一个空的错误对象 NSError *error = nil; // 初始化文件对象 GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data options:0 error:&error]; // 获取根节点 GDataXMLElement *rootElement = [document rootElement];// NSLog(@"%@",[rootElement stringValue]); // 获取根节点下 student节点 NSArray *elmentArray = [rootElement elementsForName:@"Student"]; // 初始化数组 self.dataArray = [NSMutableArray array]; // 遍历数组 对每一个sudent节点继续化整为零 for (GDataXMLElement *elment in elmentArray) {// // 取出name节点// NSArray *nameElmentArray = [elment elementsForName:@"name"];// // // 从数组中取出name节点的值// GDataXMLElement *nameElement = nameElmentArray[0];// // // 把节点中的值取出来// NSString *name = [nameElement stringValue]; Student *stu = [[Student alloc] init]; NSString *name = [self dataToString:elment elementName:@"name"]; stu.name = name; NSString *age = [self dataToString:elment elementName:@"age"]; stu.age = age; NSString *gender = [self dataToString:elment elementName:@"gender"]; stu.gender = gender; NSString *motto = [self dataToString:elment elementName:@"motto"]; stu.motto = motto; [self.dataArray addObject:stu]; // 释放 ++++++++++++++++ [stu release]; }}
// 1.找报红的对象(报红方法中没有,需要外界传递)// 2.找可变对象(例如name等 需要外界传递)// 3.选好返回值- (NSString *)dataToString:(GDataXMLElement *)element elementName:(NSString *)elementName{ // 取出name节点 NSArray *nameElmentArray = [element elementsForName:elementName]; // 从数组中取出name节点的值 GDataXMLElement *nameElement = nameElmentArray[0]; // 把节点中的值取出来 NSString *name = [nameElement stringValue]; return name;}
JSON数据结构解析
// 路径 NSString *path = [[NSBundle mainBundle] pathForResource:@"area" ofType:@"json"]; // 获取数据 NSData *data = [NSData dataWithContentsOfFile:path]; // 用容器接收Json格式的数据 NSMutableArray *array = [NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingMutableContainers) error:nil]; self.dataArray = [NSMutableArray array]; for (NSDictionary *oneDic in array) {// NSArray *cityArray = oneDic[@"cityList"];// // [self.dataDic setObject:cityArray forKey:oneDic[@"province"]]; CityModel *model = [[CityModel alloc] init]; [model setValuesForKeysWithDictionary:oneDic]; [self.dataArray addObject:model]; [model release]; }
0 0
- [TwistedFate]XML JSON数据结构解析
- XML.JSON数据结构解析
- XML、JSON数据结构解析
- XML,JSON数据结构解析
- UIday1502:XML 、JSON 数据结构解析
- UI XML,JSON 数据结构解析
- 第十五讲:XML、JSON数据结构解析
- iOS之JSON,XML数据结构解析
- UI课程15 XML、JSON数据结构解析
- iOS编程------XML、JSON数据结构解析
- UI第十五天:XML、JSON数据结构解析
- UI基础-XML、JSON 数据结构解析
- UI day 14 XML JSON数据结构解析
- JSON解析,XML解析
- JSON解析、XML解析
- XML解析 JSON解析
- XML解析、Json解析
- JSON解析/XML解析
- 汇编语言:TEST
- c malloc分配内存
- Windows 下openssl安装与配置
- Search for a Range
- python list 列表中可以用的swap方法
- [TwistedFate]XML JSON数据结构解析
- Android面试题整理--2
- JAVA23种设计模式(1)-创造型模式6种
- 关于MyEclipse的破解(myeclipse trial expired)
- 小飞侠的游园方案-P1028
- 用Swing写个scrapy爬虫图形界面 Ⅱ
- windows server 2003中所有asp网站都出现同一个问题
- 学自慕课网:Dom对象控制Html元素(一)
- ubuntu各种界面美化大型攻略