2013-04-29 76 views
1

我正在使用NSXMLParser來解析來自RSS源的數據。從CDATA Block,我也通過首先捕捉圖像網址來拉動圖像。這就是我如何使用的NSXMLParser的CDATA方法:如何忽略一系列NSStrings中的空字符串值

- (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; 
} 

正如你所看到的,一切都是乾淨的並簡單地完成。你可以看到下面的輸出:

enter image description here

有什麼辦法,它只是不接收空,只需要圖片網址?

回答

2

爲什麼不只是忽略您自己的nil值字符串?

NSString *imageURLString = [self getFirstImageUrl:someString]; 
if (imageURLString) 
    NSLog(@"IMAGE URL STRING %@", imageURLString); 
+0

圖像網址謝謝。可能是我醉得無法想象它那麼容易。 – Jessica 2013-04-30 02:24:30

0
[self getFirstImageUrl:someString]; 

你不應該使用你的currentString變量嗎?

也不假定

- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock 

將被調用一次爲一個XML節點,你應該開始包含CDATA節點時創建一個新的NSMutableData對象,使用foundCDATA委託方法來appendData您NSMutableData並僅在完成處理節點時使用您的NSMutableData對象(您有兩種代理方法)

+0

即使使用currentString變量,結果也是一樣的。你可以提供一些代碼如何處理從nsmutabledata – Jessica 2013-04-29 22:20:45