XML/JSON解析
发布时间:2020-12-16 00:17:30 所属栏目:百科 来源:网络整理
导读:#pragma mark -JSon 解析 - ( void )button3Action:( UIButton *)button { //1. 找到文件路径 NSString *filePath = [[ NSBundle mainBundle ] pathForResource : @"Teachers" ofType : @"txt" ]; NSData *data = [ NSData dataWithContentsOfFile :filePath
#pragma mark -JSon解析
- (void)button3Action:(UIButton*)button { //1.找到文件路径 NSString*filePath = [[NSBundlemainBundle]pathForResource:@"Teachers"ofType:@"txt"]; NSData*data = [NSDatadataWithContentsOfFile:filePath]; //2.通过系统自带的json解析工具解析数据 NSMutableArray*array = [NSJSONSerializationJSONObjectWithData:dataoptions:NSJSONReadingMutableContainerserror:nil]; NSLog(@"array = %@",array); for(NSMutableDictionary*dicinarray) {
Student*stu = [[Studentalloc]init];
[stusetValuesForKeysWithDictionary:dic];//把字典里Value赋值给Model的属性
[self.allStudentArrayaddObject:stu]; @"gender = %@ name = %@ number = %@ phone = %@",stu.gender,164)">name,164)">number,164)">phone); } 用jsonKit工具解析数据 NSMutableArray*array2 = [dataobjectFromJSONData]; @"array2 = %@",array2);
}
#pragma mark - Domvoid)button2Action:(// NSLog(@"dom解析");
@"Students"@"txt"]; dataWithContentsOfFile:filePath]; 创建dom解析工具对象 GDataXMLDocument*xmlDocument = [[GDataXMLDocumentalloc]initWithData:dataoptions:0error:nil]; 获取根节点 GDataXMLElement*rootElement = xmlDocument.rootElement; //NSLog(@"root = %@",rootElement); //6.创建存放model学生的数组 allStudentArray= [NSMutableArrayarray]; //3.遍历根节点上的子节点 for(GDataXMLElement*subElementinrootElement.children) { //NSLog(@"子节点= %@",subElement); //5.循环创建存放学生属性值的对象 Student*stu = [[Studentalloc]init]; //4.遍历子节点上的子节点 GDataXMLElement*ssubElementinsubElement.children) { //7.kvc进行赋值 [stusetValue:ssubElement.stringValueforKey:ssubElement.name]; } [addObject:stu]; [sturelease]; } // GDataXMLElement *twoElement = [rootElement.children objectAtIndex:1]; // NSLog(@"获取第二个子节点 Student*stuinallStudentArray) { @"number = %@ time = %@ name = %@ address = %@",164)">time,164)">address); } }
#pragma mark - sax
// SAX解析特点:逐行解析一个一个按每个标签进行解析 优点适合处理大型数据不占内存 缺点不能对某个标签进行修改不能定位到某个指定的标签 - (void)buttonAction:(获取文件 @"txt"]; 将文件转换成NSData类型 用系统自带工具NSXMLParse解析数据 NSXMLParser*parser = [[NSXMLParserinitWithData:data]; 设置代理签订协议并使用代理方法解析 parser.delegate=self; 开始解析数据XML [parserparse]; [parserrelease]; } #pragma mark -- 1.开始解析void)parserDidStartDocument:(NSXMLParser*)parser { 开始解析"); 注意初始化方法写在只走一次的方法里 初始化数组 array]; } #pragma mark -- 2.开始解析标签 -(void)parser:(NSXMLParser*)parser didStartElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName attributes:(NSDictionary*)attributeDict { 开始标签 根据开始标签stu判断是否是学生,如果是创建一个学生对象 if([elementNameisEqualToString:@"stu"]) { 将学生对象加入数组中 [release]; } currentElement= elementName; 在一个方法里用到另一个方法的参数需要一个中间变量(把它作为属性),33)">来传值 } #pragma mark --3.解析标签值NSXMLParser*)parser foundCharacters:(NSString*)string { // NSLog(@"string = %@",string); 取出学生对象并赋值
Student*stu = [self.allStudentArraylastObject];
[stusetValue:stringforKey:currentElement];
} #pragma mark --4.结束解析标签NSXMLParser*)parser didEndElement:(NSString*)qName { currentElement=nil; 结束标签 } #pragma mark --5.结束解析void)parserDidEndDocument:(NSXMLParser*)parser { address); } 结束解析");
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |