2009-10-05 12 views
1

Je souhaite analyser le fichier XML. Je suis capable d'analyser un fichier XML simple. mais il y a peu de fichier XML complexeiPhone: analyse le fichier XML avec l'attribut

<?xml version="1.0" encoding="utf-8"?> 
<Level> 
<p id='327'> 
    <Item> 
     <Id>5877</Id> 
     <Type>0</Type> 
     <Icon>---</Icon> 
     <Title>Btn1Item1</Title> 
    </Item> 
    <Item> 
     <Id>5925</Id> 
     <Type>0</Type> 
     <Icon>---</Icon> 
     <Title>Btn1Item4</Title> 
    </Item> 
</p> 
</Level> 

Ici, je veux obtenir la valeur de la balise <p> (je veux dire que je veux obtenir la valeur de l'attribut id qui est 327) S'il vous plaît suggérer

Répondre

2

Vous pouvez utiliser ci-dessous le code pour trouver votre valeur « id » dans la méthode d'analyse XML,

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

    if([elementName isEqualToString:@"p"]) 
    { 

     int idValue = [[attributeDict objectForKey:@"id"] intValue]; 

     NSLog(@"Reading id value :%d", idValue); 
    } 

} 
+0

Dans mon cas, j'ai déclaré int * count dans le fichier .h et l'ai utilisé comme compte = [[attributeDict objectForKey: @ "count"] intValue]; dans le fichier .m mais il donne un avertissement "warning: assignation fait un pointeur d'entier sans un cast" – Maulik

+0

Y vous avez écrit int * count? Cela devrait être un compte int; seulement. –

0

dans votre méthode (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict, l'argument attributeDict contient tous les attributs. Par exemple, pour accéder à l'attribut 'id', appelez simplement [attributeDict objectForKey:@"id"].