xml
- (void)viewDidLoad sax - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. //文件读写第一步,NSString * filePath = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"xml"]; NSData * data = [[NSData alloc] initWithContentsOfFile:filePath]; [filePath release]; //系统提供的解析类,解析SAX; NSXMLParser * pleser = [[NSXMLParser alloc] initWithData:data]; pleser.delegate = self; [pleser parse];//开始解析 } #pragma mark NSXMLParserDelegate // Document handling methods //开始解析文档 - (void)parserDidStartDocument:(NSXMLParser *)parser { NSLog(@"开始解析文档"); self.studentArray = [[NSMutableArray alloc] init]; } //结束解析文档 - (void)parserDidEndDocument:(NSXMLParser *)parser { NSLog(@"结束解析文档"); for (Student * stu in self.studentArray) { NSLog(@"%@,%@,%@",stu.age,stu.sex); } } //解析开始标签(遇到开始标签,进入方法) - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict; { NSLog(@"解析开始标签 StartElement:%@",elementName); if ([elementName isEqualToString:kStudent]) { self.student = [[Student alloc] init]; } else if ([elementName isEqualToString:kName]|| [elementName isEqualToString:kSex]||[elementName isEqualToString:kAge]) { self.isStore = YES; } } //解析开始标签后面的内容. //解析结束标签(遇到结束标签,进入方法) - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { NSLog(@"解析结束标签 EndElement:%@",elementName); if ([elementName isEqualToString:kStudent]) { [self.studentArray addObject:self.student]; } else if ([elementName isEqualToString:kName]) { self.student.name = self.currentString; } else if ([elementName isEqualToString:kSex]) { self.student.sex = self.currentString; } else if ([elementName isEqualToString:kAge]) { self.student.age = self.currentString; } self.isStore = NO; } //解析开始标签后面的内容 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { //NSLog(@" 解析标签内容:%@",string); if (self.isStore) { self.currentString = string;//只有标签是name,sex,age,才赋值. } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |