parser XML

kazou_22

Membre confirmé
27 Novembre 2009
16
0
36
bonjour,

je veux réaliser un parser XML sous iphone :

mon fichier xml
Bloc de code:
<refcons><![CDATA[]]></refcons>
<nom><![CDATA[Chaise en teck MAYOTTE]]></nom>
<modele><![CDATA[]]></modele>
etc ...
je cherche a referencer tout les <nom> dans un tableau, j'ai donc initialisé le parse comme ceci
Bloc de code:
(void)parseXMLFile:(NSString *)pathToFile {
    BOOL success;
    NSURL *xmlURL = [NSURL fileURLWithPath:pathToFile];
    
    if (addressParser) // addressParser is an NSXMLParser instance variable
        
        [addressParser release];
    
    addressParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL];
    
    [addressParser setDelegate:self];
    
    [addressParser setShouldResolveExternalEntities:YES];
    
    success = [addressParser parse];
et après implémenté les méthodes



Bloc de code:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
    
        if ( [elementName isEqualToString:@"nom"]) {
        
        // addresses is an NSMutableArray instance variable
        
        if (!nom)
            
            nom = [[NSMutableArray alloc] init];
        
        return;
        
    }

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
        
        if (!currentStringValue) {
            
            // currentStringValue is an NSMutableString instance variable
            
            currentStringValue = [[NSMutableString alloc] initWithCapacity:50];
            
        }
        
        [currentStringValue appendString:string];
        
    }
    
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
        
        // ignore root and empty elements
        
        if (( [elementName isEqualToString:@"nom"]) ||
            
            ( [elementName isEqualToString:@"noms"] )) return;
        
    
}
mais cela ne marche pas quand je veux faire
Bloc de code:
    NSLog(@"%@",currentStringValue);
:( merci d'avance a ceux qui prendront le temps de me lire :)
 
C'est difficile à dire (tu as bien réglé le délégué comme il faut, je ne vois rien d'évident), il va vraiment falloir que tu lances le débogueur et que tu fasses du pas-à-pas pour savoir ce qui se passe. Tu vas voir, ça ne fait pas mal !

P.S.: Au lieu de

Bloc de code:
    if (addressParser)
        [addressParser release];

Tu peux simplement écrire:
Bloc de code:
[addressParser release];
Il est possible d'envoyer des messages à nil, ça n'a aucune incidence.