NSXMLParser解析XML
1 // 解析XML分SAX和DOM解析两种方式:NSXMLParser是系统自带的SAX解析方式,解析步骤如下 2 -(void)start 3 { 4 NSString* path = [[NSBundle mainBundle] pathForResource:@"Notes" ofType:@"xml"]; 5 6 NSURL *url = [NSURL fileURLWithPath:path]; 7 8 // 1.根据文件地址创建解析器 9 NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url]; 10 11 // 2.设置解析器代理 12 parser.delegate = self; 13 14 // 3.开始解析 15 [parser parse]; 16 NSLog(@"解析完成..."); 17 } 18 19 /** 20 * 文档开始的时候触发 21 */ 22 - (void)parserDidStartDocument:(NSXMLParser *)parser 23 { 24 _notes = [NSMutableArray new]; 25 } 26 27 /** 28 * 文档出错的时候触发 29 */ 30 - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError 31 { 32 NSLog(@"%@",parseError); 33 } 34 35 /** 36 * 遇到一个开始标签时候触发,,elementName是元素,qualifiedName是限定名,attributeDict是属性 37 */ 38 - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI 40 qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict 42 { 43 _currentTagName = elementName; 44 if ([_currentTagName isEqualToString:@"Note"]) { 45 NSString *_id = [attributeDict objectForKey:@"id"]; 46 NSMutableDictionary *dict = [NSMutableDictionary new]; 47 [dict setObject:_id forKey:@"id"]; 48 [_notes addObject:dict]; 49 } 50 51 } 52 53 /** 54 * 遇到字符串时候触发 55 */ 56 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 57 { 58 // 替换string的回车符和空格 59 string =[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 60 if ([string isEqualToString:@""]) { 61 return; 62 } 63 NSMutableDictionary *dict = [_notes lastObject]; 64 65 if ([_currentTagName isEqualToString:@"CDate"] && dict) { 66 [dict setObject:string forKey:@"CDate"]; 67 } 68 69 if ([_currentTagName isEqualToString:@"Content"] && dict) { 70 [dict setObject:string forKey:@"Content"]; 71 } 72 73 if ([_currentTagName isEqualToString:@"UserID"] && dict) { 74 [dict setObject:string forKey:@"UserID"]; 75 } 76 } 77 78 /** 79 * /遇到结束标签时候出发 80 * 81 */ 82 - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI 83 qualifiedName:(NSString *)qName; 84 { 85 self.currentTagName = nil; 86 } 87 /** 88 * 遇到文档结束时候触发 89 */ 90 - (void)parserDidEndDocument:(NSXMLParser *)parser 91 { 92 [[NSNotificationCenter defaultCenter] postNotificationName:@"reloadViewNotification" object:self.notes userInfo:nil]; 93 self.notes = nil; 94 }
com.nigo
浙公网安备 33010602011771号