2012-06-08 16 views
0

我正在嘗試從這個網站數據的圖像:解析圖片在Objective-C

<div class="image"> 
<a href="http://www.website.com/en/105/News/10217/"> 
    <img src="/images/cache/105x110/crop/images%7Ccms-image-000005554.gif" 
     width="105" height="110" alt="kollsge (photo: author)" /> 
</a> 
</div> 

這是我的代碼:

HTMLNode *bodyNode = [parser body]; 

NSArray *imageNodes = [bodyNode findChildTags:@"div"]; 

for (HTMLNode *imageNode in imageNodes) { 
    if ([[imageNode getAttributeNamed:@"class"] isEqualToString:@"image"]) { 
     NSLog(@"%@", [imageNode getAttributeNamed:@"img src"]); 
    } 
} 

幫助將非常感激。

我解決它通過這個代碼:

for (HTMLNode *imageNode in imageNodes) { 
     if ([[imageNode getAttributeNamed:@"class"] isEqualToString:@"image"]) { 
      HTMLNode *aNode = [imageNode firstChild]; 
      HTMLNode *imgNode = [aNode nextSibling]; 
      HTMLNode *imNode = [imgNode firstChild]; 
      NSLog(@"%@", [imNode getAttributeNamed:@"src"]); 
     } 
    } 
+0

問題是什麼? –

+0

它在控制檯中表示爲NULL。 – Benjamen

+0

您是否嘗試過逐步調試? –

回答

3

你是不是在樹要正確。您正試圖在您的div上找到名爲img src的屬性。這將是這樣的:

<div class="image" img src="whatever"> 

一兩件事,這不是有效的HTML,但更重要的問題是要尋找在孩子。你正在尋找的東西嵌套在div中,而不是屬性。由於你的div只有一個孩子,所以快速瀏覽一下你在評論中提供的項目,我相信以下內容將起作用:

HTMLNode *bodyNode = [parser body]; 

NSArray *imageNodes = [bodyNode findChildTags:@"div"]; 

for (HTMLNode *imageNode in imageNodes) { 
    if ([[imageNode getAttributeNamed:@"class"] isEqualToString:@"image"]) { 
     HTMLNode *aNode = [imageNode firstChild]; 
     HTMLNode *imgNode = [aNode nextSibling]; 
     NSLog(@"%@", [imgNode getAttributeNamed:@"src"]); 
    } 
} 
+0

我試過了,它顯示「訪問密碼錯誤」。不過謝謝你。 – Benjamen

+0

在哪一行?說它有一個不好的訪問代碼就像只是說「它沒有工作」一樣,我相信我的理論是正確的,但你需要孩子,而不是div的屬性。 – borrrden

+0

HTMLNode.m文件(xmlAttrPtr attr = node-> properties; NULL!= attr; attr = attr-> next) – Benjamen