Question

I want to wait for NSXMLParser process to complete and then continue with other processes. I use NSXMLParser to parse XML data.

This is my code:

 - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
   NSLog(@"Did start element");
   if ( [elementName isEqualToString:@"FILENAME"])
   {
       XML_FIELD = FILENAME_CLOUD2;
       NSLog(@"found rootElement");
       return;
   }
   else if ( [elementName isEqualToString:@"UPLOADTIME"])
   {
       NSLog(@"found rootElement");
       XML_FIELD = UPLOADTIME2;
       return;
   }

}

didEndElement():

 - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
   NSLog(@"Did end element");
   if ([elementName isEqualToString:@"FILENAME"])
   {
      NSLog(@"rootelement end");
   }
   XML_FIELD = UNIMPORTANT2;
}

foudCharaters():

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
   if (XML_FIELD == FILENAME_CLOUD2)
   {
      NSLog(@"Value %@",string);
      [FileCompletedArray insertObject:string atIndex:0];
   }
   else if (XML_FIELD == UPLOADTIME2)
   {
      NSLog(@"Value %@",string);
      [UploadTimeArray insertObject:string atIndex:0];
   }
}

Above code is used to get data from NSXMLParser but my app needs to wait for the parse xml process to complete. Can I use dispatch () ?

Was it helpful?

Solution

NSXMLParser works completely synchronous. When the parse method returns the parsing is finished (or has failed with an error). So there is no need to "wait" for it to complete.

OTHER TIPS

Its very simple..

NSXMLParser *parser=[[NSXMLParser alloc] initWithData:data];
parser.delegate=self;

if([parser parse]){
   NSLog(@"Parsing Finished");
}else{
   NSLog(@"Parsing Failed");
}

Parser will call delegate function

- (void)parserDidStartDocument:(NSXMLParser *)parser{
     NSLog(@"Parsing started");
}

when the function parse is called..

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top