2011-06-13 16 views
5

¿Cómo se extraen los atributos de XML utilizando el analizador NSXML?NSXMLParser Atributos de análisis

Heres mi xml:

<item> 
<title>Button hails 'amazing' win</title> 
<description>Jenson Button hailed yesterday's crazy Canadian Grand Prix victory as the best of his Formula One career. 
</description> 
<link>http://www.skysports.com/story/0,19528,12433_6986809,00.html</link> 
<guid isPermaLink="false">12433_6986809</guid> 
<pubDate>Mon, 13 Jun 2011 06:21:00 GMT</pubDate> 
<category>News Story</category> 
<enclosure type="image/jpg" url="http://img.skysports.com/11/06/128x67/Canadian-GP-Jenson-Button-celebrates1_2609288.jpg" length="123456" /> 
</item> 

que necesito para obtener la url de las etiquetas del recinto.

Gracias

Respuesta

15
if([elementName isEqualToString:@"enclosure"]) 
{ 
    NSString *urlValue=[attributeDict valueForKey:@"url"]; 
    NSString *urlValue=[attributeDict valueForKey:@"type"]; 
    NSString *urlValue=[attributeDict valueForKey:@"length"]; 
} 
+1

+1 ... simple n buena respuesta .. :)) – mAc

+1

Ya es genial respuesta .. –

+0

Gracias por la respuesta. Me gustaría agregar que estas líneas deben ir al método de delegado de 'NSXMLParser' que es: ' - (void) analizador: (NSXMLParser *) analizador didStartElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualifiedName: (NSString *) qualifiedName attributes: (NSDictionary *) attributeDict'. – Neeku

1

El método ...

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

le da un diccionario de atributos y sus claves (attributeDict) ... busque una entrada introducido "URL" cuando el elementName es igual a "caja" ...

3

es necesario utilizar NSXMLParser y sus funciones de delegado

-

(BOOL) parse:(NSData *)xmlData 


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



} 

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ 

} 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ 

} 

entonces es necesario utilizar algo como esto

if([elementName isEqualToString:@"enclosure"]) 
    { 
     NSMutableDictionary *Dict=[NSMutableDictionary dictionary]; 
     [Dict setObject:[attributeDict valueForKey:@"url"] forKey:@"url"]; 
     [categoryDict setObject:[attributeDict valueForKey:@"type"] forKey:@"type"]; 

    } 
0

Aquí está la explicación: Ejemplo XML con el atributo:

enter image description here

Uso método xml delegado:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
attributes:(NSDictionary *)attributeDict 
{ 
    if ([elementName isEqualToString:@"remoteContent"]){ 
     NSString* href = [attributeDict objectForKey:@"href"]; 
     NSLog(@"href %@",href); 
     [someArray addObject:href]; 
    } 
} 
Cuestiones relacionadas