Самое простое - сделать что-то вроде этого:
NSXMLParser *xmlParser = [[NSXMLParser alloc]initWithData:<yourNSData>];
[xmlParser setDelegate:self];
[xmlParser parse];
Обратите внимание, что setDelegate: устанавливает для делегата значение «self», то есть текущий объект. Итак, в этом объекте вам нужно реализовать методы делегата, которые вы упомянули в вопросе.
так что дальше в коде вставьте:
- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict{
NSLog(@"I just found a start tag for %@",elementName);
if ([elementName isEqualToString:@"employee"]){
// then the parser has just seen an <employee> opening tag
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
NSLog(@"the parser just found this text in a tag:%@",string);
}
и т.д.. и т.д.
Это немного сложнее, когда вы хотите сделать что-то вроде установки переменной на значение какого-либо тега, но обычно это делается с помощью переменной класса caleld, например "BOOL inEmployeeTag
", которую вы устанавливаете в true (YES) didStartElement
: метод и false в didEndElement
: метод - и затем проверьте его значение в методе foundCharacters
. Если да, тогда вы присваиваете var значение строки, а если нет, то не делаете.
ричард