这真是莫名其妙。我有一个 NSXMLParser 读取包含大量 CDATA 部分的文档。但是我发现在程序的某些运行中,我通过这种方法接收到的数据是错误的。它并不总是发生,但当它发生时,通常在它应该实际阅读的部分之后,文档的其他一些随机部分的大约 100 个字符。
简化,我有这个:
- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock {
NSString *queryFragment = [NSString stringWithUTF8String:[CDATABlock bytes]];
....
}
令人难以置信的是,在阅读同一文档的同一部分时,有时变量 queryFragment 得到的正是我所期望的,但有时它最后会出现随机垃圾。我曾经见过它读过 CDATA 块的末尾并获得原始 XML!
我已经调试了两天了。任何想法将不胜感激。