NSXMLParser is a SAX Parser. So it's very hard to implement your requirement (Not so hard you need a flag).
You can do like:
Declare a BOOL in your .h file like:
BOOL flag;
And implement parse method like:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
flag = false;
if ([elementName isEqualToString:@"Trivia"])
{
flag = true;
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ([elementName isEqualToString:@"Member"] && flag)
{
//read the value here
}
}
For doing similar task it's better to use a DOM Parser like GData XMLParser (I recommend DOM Parsers for this requirement)
if you are using GDataXMLParser you can do like:
- (void)parseMyXML:(NSString *)xml
{
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:[xml dataUsingEncoding:NSUTF8StringEncoding] options:0 error:&error];
if (doc == nil) { return nil; }
NSArray *members = [doc nodesForXPath:@"//Top10Score/Trivia" error:nil];
for (GDataXMLElement *member in members)
{
int count = 0;
NSArray *names = [member elementsForName:@"Member"];
while (names.count >count)
{
GDataXMLElement *firstName = (GDataXMLElement *) [names objectAtIndex:0];
NSLog(@"Value : %@",[[names objectAtIndex:0] stringValue]);
//store data here
count++;
}
}
}