Try like this for parsing your XML, once you parsed then filter it accordingly:-
-(IBAction)test:(id)sender
{
self.mutableArr=[[NSMutableArray alloc]init];
NSURL *url = [[NSURL alloc]initWithString:@"file:///Users/XYZ/Desktop/test.xml"];//this is your xml file url
NSXMLParser *parser = [[NSXMLParser alloc]initWithContentsOfURL:url];
[parser setDelegate:self];
BOOL par=[parser parse];
NSLog(@"par=%d",par);
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"firstname"])
{
self.elementNm=elementName;
}
if ([elementName isEqualToString:@"lastname"])
{
self.elementNm=elementName;
}
if ([elementName isEqualToString:@"address"])
{
self.elementNm=elementName;
}
if ([elementName isEqualToString:@"zipcode"])
{
self.elementNm=elementName;
}
if ([elementName isEqualToString:@"city"])
{
self.elementNm=elementName;
}
if ([elementName isEqualToString:@"email"])
{
self.elementNm=elementName;
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ([elementName isEqualToString:@"profiles"])
{
NSLog(@"rootelement end");
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if ([string rangeOfString:@"\n"].location== NSNotFound)
{
if (string.length > 0)
{
self.mutableDict=[[NSMutableDictionary alloc]init];
[self.mutableDict setObject:string forKey:self.elementNm];
[self.mutableArr addObject:self.mutableDict];
}
}
}
//Now filtered you array after parsing xml
-(IBAction)filterArray:(id)sender
{
for (NSMutableDictionary *dict in self.mutableArr)
{
if ([dict objectForKey:@"zipcode"])
{
NSPredicate *pd=[NSPredicate predicateWithFormat:@"(zipcode == %@)", [dict objectForKey:@"zipcode"]];
[self.mutableArr filterUsingPredicate:pd];
}
}
}