我正在使用NSXMLParser来解析来自RSS Feed的数据。从CDATA Block,我也是通过首先捕获图像网址来提取图像。这就是我使用nsxmlparser的CDATA方法的方法:
- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock {
NSString *someString = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding];
[currentString appendString:someString];
NSString *imageURLString = [self getFirstImageUrl:someString];
NSLog(@"IMAGE URL STRING %@", imageURLString);
}
这是我从上面的方法中调用的方法:
-(NSString *)getFirstImageUrl: (NSString *) html {
NSScanner *theScanner;
NSString *imageURL = nil;
theScanner = [NSScanner scannerWithString: html];
// find start of tag
[theScanner scanUpToString: @"<img" intoString: NULL];
if ([theScanner isAtEnd] == NO) {
[theScanner scanUpToString: @"src=\"" intoString: NULL];
NSInteger newLoc2 = [theScanner scanLocation] + 5;
[theScanner setScanLocation: newLoc2];
// find end of tag
[theScanner scanUpToString: @"\"" intoString: &imageURL];
}
return imageURL;
}
正如您所看到的,一切都很干净而且干得很简单。您可以看到以下输出:
有没有什么方法它只是没有收到空值而只拍摄图片网址?
答案 0 :(得分:2)
为什么不自己忽略零值字符串?
NSString *imageURLString = [self getFirstImageUrl:someString];
if (imageURLString)
NSLog(@"IMAGE URL STRING %@", imageURLString);
答案 1 :(得分:0)
[self getFirstImageUrl:someString];
你不应该使用currentString变量吗?
也不要推测
- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock
对于XML节点,只会被调用一次,你应该在启动包含CDATA的节点时创建一个新的NSMutableData对象,使用foundCDATA委托方法将appendData附加到NSMutableData,并在完成处理节点时仅使用NSMutableData对象(你有两个委托方法)