Поскольку у вас нет текста внутри тегов, вы можете использовать метод parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName attributes:(NSDictionary *)attributeDict
в своем делегате. Чем вы можете хранить значения внутри словаря или объекта. Если у вас есть несколько тегов subject
, вы можете использовать parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
для изменения контекста вашего анализатора. Официальная документация должна содержать более подробную информацию о доступных методах.
Вы можете сделать что-то подобное (неполная реализация):
/*
* Incomplete implementation just to give some pointers
*/
@implementation MyDelegate
-(void) init {
if((self = [super init])) {
_subjects = [NSMutableArray new];
}
}
-(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName attributes:(NSDictionary *)attributeDict {
if([elementName equalsIgnoreCase:@"subject"]) {
_context = [NSMutableDictionary new];
} else {
[_context setObject:[attributeDict valueForKey:@"mark"] forKey:elementName];
}
}
- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName {
[_subjects addObject:_context]
[_context release]; _context = nil;
}
@end