这真是令人费解。我有一个读取包含大量CDATA节的文档的NSXMLParser。但我发现在程序的某些运行中,我用这种方法得到的数据是错误的。这并不总是发生,但当它发生时,通常在文档的其他随机部分中,在它应该实际阅读的部分之后有大约100个字符。
简而言之,我有以下几点:
- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock {
NSString *queryFragment = [NSString stringWithUTF8String:[CDATABlock bytes]];
....
}令人难以置信的是,当阅读同一文档的同一部分时,有时变量queryFragment会得到我所期望的结果,但有时它的结尾会有随机的垃圾。我曾经见过它读过CDATA块的末尾并获得原始的XML!
我已经调试了两天了。任何想法都会受到深深的赞赏。
发布于 2012-12-23 01:55:26
这是错误的,因为您需要一个以0结尾的带有stringWithUTF8String:的utf-8字符串
通过,原始字节不是0终止
你必须使用数据:
NSString *queryFragment = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding];https://stackoverflow.com/questions/14005113
复制相似问题