2011-06-28 23 views
3

我並不認爲這個問題的iOS部分真的太重要了,但我只是認爲我會添加該部分以保證安全。我試圖解析一些應用程序的HTML(客戶端想要解析HTML而不是使用Web視圖),並使用我從另一個問題中發現的hpple代碼以及用於搜索的XPath格式。我非常喜歡Xpath,從來沒有真正使用它,但我開始瞭解它,但我堅持試圖獲得HTML的一部分(我能夠搜索並找到我需要的一切)。從源HTML文件中,我需要拉的是在ap標籤中,但在p標籤內還可能有其他幾個節點(如href',em,br「等)。想要也被封閉在一個div類中,並且我試着看看我是否可以將div類下的所有元素以及p中的所有元素都拉出來,但到目前爲止,我似乎無法獲得我需要的東西。的HTML看起來如何快速出樣。在iOS中使用Xpath查找P標籤內的所有元素

<div class='post'><p> This is some sample text that also includes a <a href="www.link.com">Sample Link</a> and also some <em>formatted</em> text.<p><p> A New line may also be present</p></div> 

所以我真的需要是div類內的所有<p>標籤,因爲在某些情況下,可能會有更多。我已經在我的最新嘗試,試圖//div[@class='body']/p[text()]但也沒有工作,它只是拉了一段時間從崗位。

一旦我獲得了所有內容,我希望將整個帖子轉換爲將在應用中使用的NSString,但是一旦我獲得XPath搜索格式正確,那麼我可以在那一部分中完成該操作。謝謝。

編輯: 這是我用來首先執行Xpath搜索,然後將結果轉換爲字符串的iOS中的代碼。也許是在這裏,我做錯了什麼。

NSArray *foundPosts = [xpathParser search:@"//div[@class='post']//p//node()"]; 
TFHppleElement *postelement = [foundPosts objectAtIndex:0]; 
NSString *Posts = [postelement content]; 
+0

這似乎是一個非常簡單的XPath,比如'// div [@ class ='post'] // p'。有什麼問題? –

+0

首先,你的謂詞過濾了'@ class ='body'',但是你提供的源代碼中的類名是'post'。 –

+0

@lwburk對不起,這只是一個類型,我只想給出一個簡單的例子,可以包含在post標籤中需要解析的東西 –

回答

2

中的XPath:

//div[@class='post']//p 

將返回任何div標籤下的所有後代p元素與屬性class等於 「後」。

中的XPath

//div[@class='post']//p//node() 

將返回在所有的特定div後代p標籤的所有後代節點(文本和元素)。

+0

因此,第一個Xpath只返回一個句點,我不知道它是哪一段拉,但應包含帖子的字符串只顯示零。第二個Xpath,我意識到我錯過了第二個斜槓之前,p只給了我第一個句子,直到下一個節點。也許這是我想在Xpath之後創建字符串的方式,我將使用我正在使用的一些代碼更新我的帖子,以查看是否有幫助。謝謝。 –

+0

我已經給出了一個純XPath 1.0的答案。注意你的輸入樣本不完整。這是一個錯字嗎? –

+0

我覺得這個更適合iOS的一面。我在日誌中打印出Xpath結果只是爲了查看並確信div類中的整個列表正在被發現,這只是導致問題的轉換。我認爲我在這裏找到了足夠的動力,可能需要與客戶一起使用替代解決方案(如RSS選項)。感謝您的幫助 –

相關問題