2

I have to parse two XML files in a singleview and so I m using two NSXMLParsers to get it.But he proble m is one parser is getting recognized and second parser is not getting recognized...I mean after the debugger passes this line [parser1 parse] it should go to the delegates didStartElement,foundcharacters and didEndElement but in my case the debugger is not entering those delegates.It is simply jumping to [parser1 release] stmnt.So those delegates are not getting recognized for parser1.Y is it so ? I have written this :

 NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:Url];      
 [parser setDelegate:self];
 [parser setShouldProcessNamespaces:NO];
 [parser setShouldReportNamespacePrefixes:NO];
 [parser setShouldResolveExternalEntities:NO];
 [parser parse];
 [parser release];

  NSXMLParser *parser1 = [[NSXMLParser alloc] initWithContentsOfURL:Url1];      
[parser1 setDelegate:self];
[parser1 setShouldProcessNamespaces:NO];
[parser1 setShouldReportNamespacePrefixes:NO];
[parser1 setShouldResolveExternalEntities:NO];
[parser1 parse];
[parser1 release];


 - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{
  if([elementName isEqualToString:@"TimeList"])
 {
 arr1=[[NSMutableArray alloc] init];
 drr1=[[NSMutableDictionary alloc] init];

 }
 if([elementName isEqualToString:@"Company"])
 { 
 drr1=[[NSMutableDictionary alloc] init];        
 }
 srr1=[[NSMutableString alloc] init];

 } 


 -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{


 [srr1 appendString:string];
 }


 - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {

 if([elementName isEqualToString:@"ID"])
 {

 [drr1 setObject:srr1 forKey:@"ID"];
 [srr1 release],srr1=nil;
 return;
 }  

 if([elementName isEqualToString:@"Company"]) 
 { 
 [arr1 addObject:drr1]; 
 }    


 if([elementName isEqualToString:@"TimeList"])
 {

[drr1 release];

 }

  [srr1 release],srr1=nil; 
 }




- (void)parser1:(NSXMLParser *)parser1 didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{
    if([elementName isEqualToString:@"categorylist"])
    {
        arr2=[[NSMutableArray alloc] init];
        drr2=[[NSMutableDictionary alloc] init];

    }
    if([elementName isEqualToString:@"lookup"])
    { 
        drr2=[[NSMutableDictionary alloc] init];        
    }
    srr2=[[NSMutableString alloc] init];

} 


-(void)parser1:(NSXMLParser *)parser1 foundCharacters:(NSString *)string{


    [srr2 appendString:string];
}


- (void)parser1:(NSXMLParser *)parser1 didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {

    if([elementName isEqualToString:@"Code"])
    {

        [drr2 setObject:srr2 forKey:@"Code"];
        [srr2 release],srr2=nil;
        return;
    }  

    if([elementName isEqualToString:@"lookup"]) 
    { 
        [arr2 addObject:drr2]; 
    }    


    if([elementName isEqualToString:@"categorylist"])
    {

        [drr2 release];

    }

    [srr2 release],srr2=nil; 
    }

The first parser is getting recognized and getting the data.But for the second parser didStartElement is not getting recognized...What could be the possible reason ?

Honey
  • 2,840
  • 11
  • 37
  • 71
  • is Both URL has same XML structure or different? – Codesen Oct 12 '12 at 07:05
  • diffent urls and different structures,I have edited the code.Please have a look – Honey Oct 12 '12 at 07:09
  • Different URL is fine. I am asking about tag name of the XML file – Codesen Oct 12 '12 at 07:11
  • Check this url http://stackoverflow.com/questions/8755648/use-nsxmlparser-delegate-to-parse-two-files – Codesen Oct 12 '12 at 07:15
  • I have checked that link .where should I add that line in my code ?-(void)parserDidEndDocument:(NSXMLParser *)parser; – Honey Oct 12 '12 at 07:19
  • Thats the delegate method for the NSXML parser first implement the NSXMLdelegate in interface file – Codesen Oct 12 '12 at 07:20
  • Sorry but I couldn't get actually I m pretty much new to objective -C can u please tell me what are the modifications I have to do in my code ? – Honey Oct 12 '12 at 07:24

1 Answers1

2

I solved it by myself.Actually I declared a string and passed some value to it.While parsing it checks ,if that condition gets true then it parses .. This is what I did:

NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:Url];      
[parser setDelegate:self];
[parser setShouldProcessNamespaces:NO];
[parser setShouldReportNamespacePrefixes:NO];
[parser setShouldResolveExternalEntities:NO];
currentparser=@"1";
[parser parse];
[parser release];

  NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:Url1];      
[parser setDelegate:self];
[parser setShouldProcessNamespaces:NO];
[parser setShouldReportNamespacePrefixes:NO];
[parser setShouldResolveExternalEntities:NO];
currentparser=@"2";
[parser parse];
[parser release];

 - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
 {
 if(currentparser==@"1")
 {
     //do something
 } 
 if(currentparser=@"2")
 {
     //do something
  }
  }

 -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{


   if(currentparser==@"1")
     {
        //do something
     }
   if(currentparser=@"2")
    {
       //do something
    }
    }


    - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {

   if(currentparser==@"1")
    { 
     //do something
    }
    if(currentparser=@"2")
    {
      //do something
     }
     }
Honey
  • 2,840
  • 11
  • 37
  • 71
  • HI same issue i facing if you see my comment then please i want to share with you.i have 4 urls. – jamil Feb 21 '13 at 14:46
  • http://stackoverflow.com/questions/14995533/how-to-parse-multiple-xml-files-in-iphone please look my issue.. – jamil Feb 21 '13 at 14:50