как ограничить разбор в iphone? - PullRequest
2 голосов
/ 15 февраля 2010

Я новичок в разработке для 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"]];
}
}   

}.

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

Ответы [ 2 ]

2 голосов
/ 15 февраля 2010

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

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

1 голос
/ 15 февраля 2010

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

...