XML parsing
XML Parsing
Section titled “XML Parsing”We will parse the highlighted tag data through NSXMLParser
We have declared few properties as follows
@property(nonatomic, strong)NSMutableArray *results;@property(nonatomic, strong)NSMutableString *parsedString;@property(nonatomic, strong)NSXMLParser *xmlParser;
//Fetch xml dataNSURLSession *session=[NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSURLSessionDataTask *task=[session dataTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:YOUR_XMLURL]] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
self.xmlParser=[[NSXMLParser alloc] initWithData:data];self.xmlParser.delegate=self;if([self.xmlParser parse]){ //If parsing completed successfully
NSLog(@"%@",self.results);
}
}];
[task resume];Then we define the NSXMLParserDelegate
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName attributes:(NSDictionary<NSString *, NSString *> *)attributeDict{
if([elementName isEqualToString:@"GeocodeResponse"]){ self.results=[[NSMutableArray alloc] init]; }
if([elementName isEqualToString:@"formatted_address"]){ self.parsedString=[[NSMutableString alloc] init]; }
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if(self.parsedString){ [self.parsedString appendString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]]; }
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName{
if([elementName isEqualToString:@"formatted_address"]){ [self.results addObject:self.parsedString];
self.parsedString=nil; }
}
