как ограничить парсинг в айфоне?

Я новичок в разработке iphone. Я хочу проанализировать URL-адрес изображения из файла xml и отобразить его в RSS-канале. Есть три URL-адреса изображения, но я хочу получить только один URL-адрес и отобразить его.

<entry>
<id>xxxxx</id>
<title>xxx xxxx xxxx</title>
<content>xxxxxxxxxxx</content>
<media:group>
<media:thumbnail url="http://tiger.jpg"/>
<media:thumbnail url="http://lion.jpg"/>
<media:thumbnail url="http://elephan.jpg"/>
</media:group>
</entry>
<entry>
<id>xxxxx</id>
<title>xxx xxxx xxxx</title>
<content>xxxxxxxxxxx</content>
<media:group>
<media:thumbnail url="http://parrot.jpg"/>
<media:thumbnail url="http://peacock.jpg"/>
<media:thumbnail url="http://sparrow.jpg"/>
</media:group>
</entry>

для разбора

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName     namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes: (NSDictionary *)attributeDict{   

currentElement = [elementName copy];
if ([elementName isEqualToString:@"entry"]) {
entry = [[NSMutableDictionary alloc] init];
currentTitle = [[NSMutableString alloc] init];
currentDate = [[NSMutableString alloc] init];
NSLog(@"inside image1 ");
}else if([elementName isEqualToString:@"media:thumbnail"])
{
if(myUrl==nil){
    NSString* myUrl = [NSString stringWithString:[attributeDict objectForKey:@"url"]];
}
}   

}.

Я хочу получить только изображение тигра и попугая. Но я получаю изображение тигра дважды. Пожалуйста, помогите мне. Спасибо.


person Warrior    schedule 15.02.2010    source источник


Ответы (2)


Когда вы начнете синтаксический анализ вашего элемента entry, сбросьте переменную myUrl на nil, поэтому вы будете анализировать «media: thumbnail» один раз для каждого элемента «entry».

person Vladimir    schedule 15.02.2010

Просто сохраните флаг в своем делегате синтаксического анализатора, который вы сбрасываете, когда видите <media:group>. Затем каждый раз, когда вы видите <media:thumbnail>, вы получаете. Затем каждый раз, когда вы получаете <media:thumbnail>, проверяйте, установлен ли флаг. Если нет, то это первый, поэтому вы берете данные и устанавливаете флаг. Когда вы видите следующее <media:thumbnail>, вы игнорируете его, потому что установлен флаг.

В вашем случае myUrl - это флаг. Так что просто сбрасывайте его на ноль каждый раз, когда вы видите <media:group>.

person Stefan Arentz    schedule 15.02.2010