NSXMLParser问题:不要获取所有数据?

我正在开发一个需要从XML文件中获取数据的应用程序。 一些节点有很多字符,我使用这个函数有一个问题:

- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; } 

例如对于一个项目的描述节点,我将只得到20-30个最后的字符,而我会得到200或300。

我用NSLog检查了这个问题,看起来问题来自于这里。 你知道什么是错的吗?

感谢您的任何build议。

SAXparsing器不保证一次获取所有字符。 您可能会从任何给定的块获得多个字符块的调用; 你的代码应该把它们连接成一个string。

parsing器对象可以发送委托给几个parsing器:foundCharacters:messages来报告一个元素的字符。 由于string可能只是当前元素的总字符内容的一部分,因此应该将其附加到当前字符累积,直到元素更改。

 - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict { if ([qualifiedName isEqualToString:@"myTag"]) { buf = [NSMutableString string]; } } - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { if ([qualifiedName isEqualToString:@"myTag"]) { buf = [buf stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; NSLog(@"Got %@", buf); } } - (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { [buf appendString:string]; }