I hope you can use ios native xml parser itself. Your XML looks pretty simple to handle. Just try to create Dictionary for each node and put it in array. So finally you will get array of dictionaries from which you can easily iterate your data.
Create NSMutableArray *dataArray & NSMutableDictionary *dataDict & NSMutableDictionary *subcatDict NSMutableArray *subCatArray
, Also have one NSString
in .h file named currentElement
.
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
currentElement = elementName;
if([elementName isEqualToString:@"category"]){
dataDict = [[NSMutableDictionary alloc] init];
}
else if ([elementName isEqualToString:@"sub_cat"]) {
if(!subCatArray) {
subCatArray = [[NSMutableArray alloc] init];
}
subcatDict = [[NSMutableDictionary alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if(dataDict && !subCatArray){
[dataDict setObject:string forKey:currentElement];
}
else if(subCatArray && subcatDict) {
[subcatDict setObject:string forKey:currentElement];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if([elementName isEqualToString:@"category"]){
[dataDict setObject:subCatArray forKey:@"sub_cat"];
[dataArray addObject:dataDict];
subCatArray = nil;
dataDict = nil;
}
else if([elementName isEqualToString:@"sub_cat"]){
[subCatArray addObject:subcatDict];
subcatDict = nil;
}
}
This will help you out.