需要使用带有ASIHTTPRequest的NSXMLParser的帮助

我目前正在尝试parsing我的xml的string表示forms,我从我的服务器上传递给ASIHTTPRequest方法的PHP脚本中取回* – (void)requestFinished:(ASIHTTPRequest )请求

我想使用NSXMLParserparsing这个XML,到目前为止,我已经得到了一切和运行,请参阅代码,我已经做到了这一点,但是我遇到的问题是,它似乎是访问* – (无效)分析器: (NSXMLParser *)parsing器foundCharacters:(NSString )string {方法多次..当我只希望它访问它一次,并返回值。 任何想法为什么发生这将不胜感激。

- (void)requestFinished:(ASIHTTPRequest *)request { // Use when fetching text NSString *responseString = [request 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]; } - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ if ([elementName isEqual:@"code"]) { NSLog(@"Found title!"); titleString = [[NSMutableString alloc] init]; } } - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ [titleString appendString:string]; NSLog(@"the code string =%@", titleString); } 

// EDITTED :::::

我忘了添加这个最后被调用的委托方法,并输出最终结果。 而我之所以说这是不行的原因是因为我在方法名中写了一些错误的东西……所有的东西都已经修好了,并且完美的工作。

 - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ if ([elementName isEqual:@"code"]) { //NSLog(@"ended title: %@", titleString); //Pass code over to animation [self parseCodeForAnimation:titleString]; [titleString release]; titleString = nil; } } 

通常,SAXparsing器会多次调用foundCharacters方法,这主要取决于被parsing数据的内容。 你所能做的就是以正确的方式处理你的应用程序。 通常情况下,通过保留类似NSMutableData或NSMutableString的东西并在每次调用foundCharacters时追加它。 当您收到一个表示不会将更多数据作为此元素的一部分发送的结束标记时,将可变内容转储为string,存储该数据,并重置下一组数据的缓冲区。