Question

J'ai ce fichier XML:

<continents>
    <continent1 id="EUR" name="EUROPE"></continent1>
    <continent2 id="AME" name="AMERICA"></continent2>
</continents>

J'ai essayé de le faire avec NSXMLParser, mais je ne peux pas montrer les résultats dans le même temps, je voudrais l'essayer avec touchXML quelqu'un peut m'aider?merci.

Était-ce utile?

La solution

"L'Europe" et "l'Amérique" sont des attributs de vos tags.Attributs définis comme "nom" dans la balise.Vous devriez vraiment se familiariser avec NSXMLParser et l'événement piloté par la méthode dans laquelle il analyse.Fondamentalement, vous créer un NSObject la sous-classe pour être le délégué de l' NSXMLParser et comme il rencontre des éléments qu'il appelle délégué méthodes sur votre objet personnalisé.Et cette très simple XML est un parfait exemple pour apprendre.Par exemple.

Ce code utilise l'ARC.

SimpleExampleParse.h:

@interface SimpleExampleParse : NSObject <NSXMLParserDelegate>
@property (strong, nonatomic) NSMutableArray *continents;
-(id)initWithString:(NSString *)stringToParse;
@end

SimpleExampleParse.m:

#import "SimpleExampleParse.h"
@implementation SimpleExampleParse{
    NSXMLParser *myParser;
}
@synthesize continents;
-(id)initWithString:(NSString *)stringToParse{
    if ((self = [super init])){
        myParser = [[NSXMLParser alloc] initWithData:[stringToParse dataUsingEncoding:NSUTF8StringEncoding]];
        myParser.delegate = self;
        self.continents = [[NSMutableArray alloc] init];
        [myParser parse];
    }
    return self;
}
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
    // Check to see if this element has an attribute "name".
    NSString *name = [attributeDict objectForKey:@"name"];
    // If name is not nil add it to our Array
    if (name) [continents addObject:name];
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
    // We don't care your XML contains no content
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
    // We don't care your XML contains no content
}
@end

Cette classe est utilisée comme ceci:

NSString *stringToParse = @"<continents><continent1 id=\"EUR\" name=\"EUROPE\"></continent1><continent2 id=\"AME\" name=\"AMERICA\"></continent2></continents>";
SimpleExampleParse *parser = [[SimpleExampleParse alloc] initWithString:stringToParse];
NSLog(@"contenents %@",parser.continents);

La sortie du journal:

contenents (
    EUROPE,
    AMERICA
)

Merci maintenant que vous avez quelque chose qui marche devant vous, prenez le temps de l'étudier et d'examiner comment il fonctionne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top