Como limitar a análise no iPhone?
-
20-09-2019 - |
Pergunta
Eu sou novo no desenvolvimento do iPhone. Desejo analisar um URL de imagem de um arquivo XML e exibi -lo em um feed RSS. Há três URL de imagem, mas quero recuperar apenas um URL e exibi -lo.
<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>
para analisá -lo
- (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"]];
}
}
}.
Eu quero recuperar apenas a imagem do tigre e do papagaio. Mas eu recebo tigre duas vezes. Por favor, me ajude.
Solução
Quando você começa a analisar o seu entry
Redefinição do elemento myUrl
variável para nulo - então você analisará a "mídia: miniatura" uma vez para cada elemento de 'entrada'
Outras dicas
Basta manter uma bandeira em seu delegado de analisador que você redefiniu quando vê <media:group>
. Então toda vez que você vê um <media:thumbnail>
você fica. Então toda vez que você obtém um <media:thumbnail>
, verifique se o sinalizador foi definido. Caso contrário, este é o primeiro, então você pega os dados e define o sinalizador. Quando você vê o próximo <media:thumbnail>
Você o ignora porque a bandeira foi definida.
No seu caso, myUrl
é a bandeira. Então, basta redefini -lo para nil todos os vínculos que você vê o <media:group>
.