- Select Tags when parsing XML with NSXML Parser Objective-C
- 2012-03-02 20:04:08.576 XML[4497:f803] stories :(
- {
- echeance = "Mars 2012n ";
- settle = "205.25n 205.5n 206n 205n 202.75n 204n 204.75n 206.5n 206.25n 210n ";
- variation = "-0.25n n -0.5n n 1n n 2.25n n -1.25n n -0.75n n -1.75n n 0.25n n -3.75n n 1.5n n ";
- },
- {
- echeance = "Juin 2012n ";
- settle = "207.75n 207.5n 207.25n 206n 204.75n 205.5n 206.25n 207.25n 206.5n 210.5n ";
- variation = "0.25n n 0.25n n 1.25n n 1.25n n -0.75n n -0.75n n -1n n 0.75n n -4n n 0.75n n ";
- },
- {
- echeance = "AoU00fbt 2012n ";
- settle = "209.75n 209.25n 208.5n 207.25n 205.75n 207.25n 207.75n 208.75n 208.5n 211.75n ";
- variation = "0.5n n 0.75n n 1.25n n 1.5n n -1.5n n -0.5n n -1n n 0.25n n -3.25n n 0.25n n ";
- },
- {
- echeance = "Novembre 2012n ";
- settle = "188.25n 188n 186.75n 186.25n 184.75n 184.75n 186.5n 186n 185n 188.5n ";
- variation = "0.25n n 1.25n n 0.5n n 1.5n n 0n n -1.75n n 0.5n n 1n n -3.5n n 1n n ";
- },
- {
- echeance = "Janvier 2013n ";
- settle = "189.75n 189n 189.5n 188.75n 187.25n 187.25n 188.5n 188.5n 187.5n 190n ";
- variation = "0.75n n -0.5n n 0.75n n 1.5n n 0n n -1.25n n 0n n 1n n -2.5n n 0n n ";
- },
- {
- echeance = "Mars 2013n ";
- settle = "191n 191n 191.5n 190.75n 189.25n 189.25n 190.5n 190.5n 189.5n 192n ";
- variation = "0n n -0.5n n 0.75n n 1.5n n 0n n -1.25n n 0n n 1n n -2.5n n 1n n ";
- },
- {
- echeance = "Juin 2013n ";
- settle = "194.5n 194.5n 195.5n 194.75n 193.25n 193.25n 194.5n 194.5n 193.5n 196n ";
- variation = "0n n -1n n 0.75n n 1.5n n 0n n -1.25n n 0n n 1n n -2.5n n 3n n ";
- }
- 2012-03-02 20:04:08.576 XML[4497:f803] stories :(
- {
- echeance = "Mars 2012";
- settle = "205.25"
- variation = "-0.25"
- },
- {
- echeance = "Juin 2012";
- settle = "207.75"
- variation = "0.25"
- #import "XMLParser.h"
- @implementation XMLParser
- @synthesize stories;
- @synthesize delegate;
- - (void)parseXMLAtURL:(NSURL*)path
- {
- stories = [[NSMutableArray alloc] init];
- textParser = [[NSXMLParser alloc] initWithContentsOfURL:path];
- [textParser setDelegate:self];
- [textParser parse];
- }
- - (void)parserDidStartDocument:(NSXMLParser *)parser
- {
- }
- - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
- {
- NSString * errorString = [NSString stringWithFormat:@"Impossible de parser le document (Code erreur %i )", [parseError code]];
- NSLog(@"erreur de parsing XML: %@", errorString);
- UIAlertView * errorAlert = [[UIAlertView alloc] initWithTitle:@"Erreur lors du chargement" message:errorString delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
- [errorAlert show];
- [errorAlert release];
- }
- - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
- {
- if(currentElement)
- {
- [currentElement release];
- currentElement = nil;
- }
- currentElement = [elementName copy];
- if ([elementName isEqualToString:kExpiry])
- {
- if(item)
- {
- [item release];
- item = nil;
- }
- if(currentExpiry)
- {
- [currentExpiry release];
- currentExpiry = nil;
- }
- if(currentSettle)
- {
- [currentSettle release];
- currentSettle = nil;
- }
- if(currentVariation)
- {
- [currentVariation release];
- currentVariation = nil;
- }
- item = [[NSMutableDictionary alloc] init];
- currentVariation = [[NSMutableString alloc] init];
- currentSettle = [[NSMutableString alloc] init];
- currentExpiry = [[NSMutableString alloc] initWithFormat:[attributeDict objectForKey:@"nom"]];
- }
- }
- - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
- {
- if ([elementName isEqualToString:kExpiry])
- {
- [item setObject:currentExpiry forKey:kExpiry];
- [item setObject:currentSettle forKey:kCloture];
- [item setObject:currentVariation forKey:kChange];
- [stories addObject:item];
- }
- //NSLog(@"compteur : %i",compteur);
- }
- - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
- {
- // on sauve les éléments de l' echeancepour l'item en cours
- if ([currentElement isEqualToString:kCloture])
- [currentSettle appendString:string];
- else if ([currentElement isEqualToString:kExpiry])
- [currentExpiry appendString:string];
- else if ([currentElement isEqualToString:kChange])
- [currentVariation appendString:string];
- }
- - (void)parserDidEndDocument:(NSXMLParser *)parser
- {
- NSLog(@"C’est fini !");
- NSLog(@"stories a %d echeances", [stories count]);
- NSLog(@"stories :%@", stories);
- [self performSelectorOnMainThread:@selector(tellTheDelegateItIsFinished) withObject:nil waitUntilDone:NO];
- }
- - (void) tellTheDelegateItIsFinished {
- [delegate xmlParserdidFinishParsing];
- }
- - (void) dealloc
- {
- [stories release];
- [textParser release];
- [item release];
- [currentVariation release];
- [currentExpiry release];
- [currentSettle release];
- [super dealloc];
- }
- @end
- #import "XMLParser.h"
- @implementation XMLParser
- @synthesize stories;
- @synthesize delegate;
- - (void)parseXMLAtURL:(NSURL*)path
- {
- stories = [[NSMutableArray alloc] init];
- textParser = [[NSXMLParser alloc] initWithContentsOfURL:path];
- [textParser setDelegate:self];
- [textParser parse];
- }
- - (void)parserDidStartDocument:(NSXMLParser *)parser
- {
- }
- - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
- {
- NSString * errorString = [NSString stringWithFormat:@"Impossible de parser le document (Code erreur %i )", [parseError code]];
- NSLog(@"erreur de parsing XML: %@", errorString);
- UIAlertView * errorAlert = [[UIAlertView alloc] initWithTitle:@"Erreur lors du chargement" message:errorString delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
- [errorAlert show];
- [errorAlert release];
- }
- - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
- {
- //compteur = 0;
- if(currentElement)
- {
- [currentElement release];
- currentElement = nil;
- }
- currentElement = [elementName copy];
- if ([elementName isEqualToString:kExpiry])
- {
- /*if(item)
- {
- [item release];
- item = nil;
- }
- if(currentExpiry)
- {
- [currentExpiry release];
- currentExpiry = nil;
- }
- if(currentSettle)
- {
- [currentSettle release];
- currentSettle = nil;
- }
- if(currentVariation)
- {
- [currentVariation release];
- currentVariation = nil;
- }
- */
- item = [[NSMutableDictionary alloc] init];
- currentExpiry = [[NSMutableString alloc] initWithFormat:[attributeDict objectForKey:@"nom"]];
- }
- else if ([elementName isEqualToString:kDate])
- currentDate = [[NSMutableString alloc] initWithFormat:[attributeDict objectForKey:@"value"]];
- else if ([elementName isEqualToString:kCloture])
- currentSettle = [[NSMutableString alloc] init];
- else if ([elementName isEqualToString:kChange])
- currentVariation = [[NSMutableString alloc] init];
- }
- - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
- {
- if ([elementName isEqualToString:kExpiry])
- {
- [item setObject:currentExpiry forKey:kExpiry];
- [item setObject:currentDate forKey:kDate];
- NSLog(@"CurrentExpiry : %@",currentExpiry);
- [item setObject:currentSettle forKey:kCloture];
- NSLog(@"CurrentSettle : %@",currentSettle);
- [item setObject:currentVariation forKey:kChange];
- NSLog(@"CurrentVariation : %@",currentVariation);
- //if(compteur == 0)
- [stories addObject:item];
- //NSLog(@"compteur before : %i, %@",compteur, elementName);
- //compteur++;
- //NSLog(@"compteur after : %i",compteur);
- }
- }
- - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
- {
- // on sauve les éléments de l' echeancepour l'item en cours
- if ([currentElement isEqualToString:kCloture])
- [currentSettle appendString:string];
- else if ([currentElement isEqualToString:kExpiry])
- [currentExpiry appendString:string];
- else if ([currentElement isEqualToString:kChange])
- [currentVariation appendString:string];
- else if ([currentElement isEqualToString:kDate])
- [currentDate appendString:string];
- }
- - (void)parserDidEndDocument:(NSXMLParser *)parser
- {
- NSLog(@"C’est fini !");
- NSLog(@"stories a %d echeances", [stories count]);
- NSLog(@"stories :%@", stories);
- //[self performSelectorOnMainThread:@selector(tellTheDelegateItIsFinished) withObject:nil waitUntilDone:NO];
- }
- - (void) tellTheDelegateItIsFinished {
- [delegate xmlParserdidFinishParsing];
- }
- - (void) dealloc
- {
- [stories release];
- [textParser release];
- [item release];
- [currentVariation release];
- [currentExpiry release];
- [currentSettle release];
- [super dealloc];
- }
- @end
- > 2012-03-03 15:47:40.164 XML[6053:f803] stories :(
- > {
- > date = "20/02/2012n ";
- > echeance = "Mars 2012n ";
- > settle = "210n ";
- > variation = "1.5n n ";
- > },
- > {
- > date = "20/02/2012n ";
- > echeance = "Juin 2012n ";
- > settle = "210.5n ";
- > variation = "0.75n n ";
- > },
- > {
- > date = "20/02/2012n ";
- > echeance = "AoU00fbt 2012n ";
- > settle = "211.75n ";
- > variation = "0.25n n ";
- > },
- > {
- > date = "20/02/2012n ";
- > echeance = "Novembre 2012n ";
- > settle = "188.5n ";
- > variation = "1n n ";
- > },
- > {
- > date = "20/02/2012n ";
- > echeance = "Janvier 2013n ";
- > settle = "190n ";
- > variation = "0n n ";
- > },
- > {
- > date = "20/02/2012n ";
- > echeance = "Mars 2013n ";
- > settle = "192n ";
- > variation = "1n n ";
- > },
- > {
- > date = "20/02/2012n ";
- > echeance = "Juin 2013n ";
- > settle = "196n ";
- > variation = "3n n ";
- > } )