Я использую NSXMLParser для разбора файла XML.Я делаю это несколько раз в моем приложении для разных целей.У меня есть один, который анализирует аннотации для локатора магазина, один, который анализирует все фильмы с определенного канала YouTube, а последний анализирует самодельный файл XML.
Все парсеры работают отлично, кроме последнего.По какой-то причине он анализирует, т.е. первый узел исправен, но затем перезаписывает его.
Вот мой код парсера:
//Standard function parser: reading open tag
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict{
currentElement = [elementName copy];
if ([elementName isEqualToString:@"item"]) {
xmlArray = [[NSMutableDictionary alloc] init];
}
}
//Standard function parser: reading string
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if ([currentElement isEqualToString:@"created_time"]){
[xmlArray setObject:string forKey:currentElement];
NSLog(@"test 1 %@", string);}
}
//Standard function parser: reading close tag
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"item"]) {
Post *newPost = [[Post alloc] init];
NSLog(@"test %@", xmlArray );
newPost.created_time = [xmlArray objectForKey:@"created_time"];
[containerArray addObject:newPost];
[xmlArray release];
}
}
XML выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8" ?>
<items>
<item>
<created_time>test</created_time>
<message>blabla</message>
<picture>http://www.trentshow.com/images/tada.jpg</picture>
</item>
</items>
И журнал выдает следующее:
2011-06-10 10:43:24.446 TabbedCalculation[1502:207] test 1 test
2011-06-10 10:43:24.448 TabbedCalculation[1502:207] test 1
2011-06-10 10:43:24.449 TabbedCalculation[1502:207] test 1
2011-06-10 10:43:24.450 TabbedCalculation[1502:207] test {
"created_time" = "\n";
}
Я не понимаю, почему анализатор зацикливается 3 раза на узле созданного времени.Любая помощь будет отличной!