Iphone 未调用NSXMLParserDelegate方法

Iphone 未调用NSXMLParserDelegate方法,iphone,xml,ios5,nsxmlparser,asiformdatarequest,Iphone,Xml,Ios5,Nsxmlparser,Asiformdatarequest,您好,我正在解析一个xml文件,我得到的响应也存储在responseString中 -(void)getData { NSURL *url = [NSURL URLWithString:@"http://quizpro.testshell.net/api/quiz/4"]; NSData *data = [NSData dataWithContentsOfURL:url]; // Load XML data from web NSString *applicationD

您好,我正在解析一个xml文件,我得到的响应也存储在responseString中

    -(void)getData
{
     NSURL *url = [NSURL URLWithString:@"http://quizpro.testshell.net/api/quiz/4"];
 NSData *data = [NSData dataWithContentsOfURL:url];  // Load XML data from web

 NSString *applicationDocumentsDir = 
 [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
 NSString *storePath = [applicationDocumentsDir stringByAppendingPathComponent:@"quiz.xml"];

 NSLog(@"store path is %@",storePath);

 [data writeToFile:storePath atomically:TRUE];

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

request.delegate=self;

[request startSynchronous];

NSError *error = [request error];

if (!error)
{
     NSData *responseData=[request responseData];

     NSString *data  =[[[NSString alloc]initWithData:responseData encoding:NSUTF8StringEncoding] autorelease];

     NSString *usableXmlString = [data stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

     NSLog(@"usableXmlString is %@",usableXmlString);

     NSData *usableData = [usableXmlString dataUsingEncoding:NSUTF8StringEncoding];

     NSXMLParser *xmlParser = [[NSXMLParser alloc]initWithData:usableData];

    [xmlParser setDelegate:self];
    [xmlParser parse];

}   
}  

- (void)requestFinished:(ASIHTTPRequest *)request
{
NSLog(@"requestFinished method");

// Use when fetching text

NSString *responseString = [request responseString];  

** I get the entire data here ** 
NSLog(@"responseString is %@",responseString);


NSData *xData = [responseString dataUsingEncoding:NSUTF8StringEncoding];
//myCode.text = responseString;
//NSLog(@" response %@", responseString);

NSXMLParser *parser = [[NSXMLParser alloc] initWithData:xData];

[parser setDelegate:self];
[parser parse];
[parser release];
}
我编写了NSXMLParser委托方法,如下所示

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
 {
 NSLog(@"parser/didStartElement");

 currentTag = elementName;


 if ([currentTag isEqualToString:@"questions"])
 {
     exams_object=[[ExamsObject alloc]init];
     NSLog(@"%@",currentTag);
 } 

  if ([currentTag isEqualToString:@"Question"])
 {
  exams_object=[[ExamsObject alloc]init];
 }

 if ([currentTag isEqualToString:@"Response"])
 {
 exams_object.responseArray=[[NSMutableArray alloc]init];
 }
   NSLog(@"%@",currentTag);

 }  

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
 {
 NSLog(@"parser/didEndElement");

 if ([currentTag isEqualToString:@"questions"])
 {
     exams_object=[[ExamsObject alloc]init];
 } 

 if([elementName isEqualToString:@"Question"])
 {
 [mainArray addObject:exams_object];
 }

 }  

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

 NSLog(@"parser/foundCharacters");

 if ([currentTag isEqualToString:@"questionText"])
 {
 [exams_object.questionArray addObject:str];
 } 
 if ([currentTag isEqualToString:@"responseText"])
 {
 [exams_object.responseArray addObject:str];
 }  
 }  

谢谢您的帮助

您是否在
.h
文件中包含了
NSXMLParserDelegate
ASIHTTPRequestDelegate

您正在调用方法来解析来自
ASIHTTPRequest
使用
断点检查执行流

@interface yourClassName: NSObject <NSXMLParserDelegate, ASIHTTPRequestDelegate>
@接口yourClassName:NSObject
同时检查这些问题


检查您是否已在@interface中添加了NSXMLParserDelegate,并在您使用的类中设置parser.delegate=self。

是的,我已添加了委托。