Partage
  • Partager sur Facebook
  • Partager sur Twitter

[iOS] Stocker éléments XML dans un Array

Sujet résolu
    28 mai 2013 à 13:37:12

    Bonjour,

    j'ai programmé un "parser" xml (qui fonctionne) qui me récupère le contenu de deux éléments "tagid" et "mac". Je souhaiterai placer ces valeurs dans deux Arrays. Mes tentatives ont été pour le moment vaines... 

    Voici le code du "parser":

    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
    NSURL *rssURL = [[NSURL alloc] initWithString:@"http://monlien.com/moncontenu"];
        
        parser = [[NSXMLParser alloc] initWithContentsOfURL:rssURL];
        
        [parser setDelegate:self];
        [parser parse];
    }
    
    
    -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
        
        self.currentElement = elementName;
        self.currentElement2 = elementName;
        
        if ([self.currentElement isEqualToString:@"mac"]) {
            self.currentTitle = [NSMutableString string];
         
        }
    
        if ([self.currentElement2 isEqualToString:@"tagid"]) {
            self.currentTitle2 = [NSMutableString string];
            
        }
    }
    
    -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
        
        if ([self.currentElement isEqualToString:@"mac"]) {
            NSLog(@"%@", self.currentTitle);
        }
        
        if ([self.currentElement2 isEqualToString:@"tagid"]) {
            NSLog(@"%@", self.currentTitle2);
        }
        
        self.currentTitle = nil;
        self.currentElement = nil;
        self.currentTitle2 = nil;
        self.currentElement2 = nil;
    
    }
    
    -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
        
        if (!self.currentElement) return;
        if ([self.currentElement isEqualToString:@"mac"]) {
            self.currentTitle = string;
    
        }
        
        if (!self.currentElement2) return;
        if ([self.currentElement2 isEqualToString:@"tagid"]) {
            self.currentTitle2 = string;
        }
        
    }
    


    Etant débutant, il se peut que le code du "parser" ne soit pas optimal. Si vous avez des suggestions d'améliorations, je suis preneur :D

    Merci par avance.

    -
    Edité par Xavier_S 28 mai 2013 à 13:39:01

    • Partager sur Facebook
    • Partager sur Twitter
      28 mai 2013 à 14:43:25

      -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
      
      self.currentElement = elementName;
      self.currentElement2 = elementName;
      
      if ([self.currentElement isEqualToString:@"mac"]) {
          self.currentTitle = [NSMutableString string];
          NSMutableArray *macArray = [NSMutableArray alloc] init];
      }
      
      if ([self.currentElement2 isEqualToString:@"tagid"]) {
          self.currentTitle2 = [NSMutableString string];
          NSMutableArray *tagIdArray = [NSMutableArray alloc] init];
      }
      }
      
      -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
      
      if ([self.currentElement isEqualToString:@"mac"]) {
          NSLog(@"%@", self.currentTitle);
          [macArray addObject:self.currentTitle];
      }
      
      if ([self.currentElement2 isEqualToString:@"tagid"]) {
          NSLog(@"%@", self.currentTitle2);
          [tagIdArray addObject:self.currentTitle2];
      }

      La solution si quelqu'un a besoin
      • Partager sur Facebook
      • Partager sur Twitter

      [iOS] Stocker éléments XML dans un Array

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown