Я использую обычный анализатор XML и храню значения XML в словаре.
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if([elementName isEqualToString:@"CountryId"]){
currentTweet.content = currentNodeContent;
[data setObject:currentTweet.content forKey:@"CountryId"];
//NSLog(@"currentNode is %@",currentNodeContent);
}
if([elementName isEqualToString:@"CountryName"]){
currentTweet.createdAt = currentNodeContent;
[data setObject:currentTweet.createdAt forKey:@"CountryName"];
//NSLog(@"currentNode is countnry Name %@",currentNodeContent);
}
/*if([elementName isEqualToString:@"Country"]){
[tweets addObject:currentTweet];
tweet *current = [tweets objectAtIndex:0];
NSLog(@"value of current is %@",current.content);
NSLog(@"value of Country tweet is %@",current.createdAt);
[currentTweet release];
currentTweet = nil;
[currentNodeContent release];
currentNodeContent = nil;
}*/
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
currentNodeContent = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
Я хочу знать о каком-либо методе, который сообщает мне, когда данные XML полностью считываются и сохраняются в массиве. Я использую эти методы с методами веб-делегатов, потому что я прочитал данные из мыла, и, видимо, завершил загрузку, я передал XML в XML-парсер следующим образом:
-(void) connectionDidFinishLoading:(NSURLConnection *) connection {
NSLog(@"DONE. Received Bytes: %d", [webData length]);
NSLog(@"recived data %@",webData);
NSString *theXML = [[NSString alloc]
initWithBytes: [webData mutableBytes]
length:[webData length]
encoding:NSUTF8StringEncoding];
//---shows the XML---
NSLog(@"%@",theXML);
[theXML release];
if( xmlParser )
{
[xmlParser release];
}
xmlParser = [[NSXMLParser alloc] initWithData: webData];
//[xmlParser setDelegate: self];
[xmlParser setShouldResolveExternalEntities: YES];
[xmlParser parse];
[connection release];
[webData release];
}