2011-01-19 56 views
4

如何選擇div標籤中的每個段落,例如。C#,Html Agility,選擇div標籤內的每個段落

<div id="body_text"> 
<p>Hi</p> 
<p>Help Me Please</P> 
<p>Thankyou</P> 

我有Html Agility在我的程序中下載和引用,我需要的是段落。可能有不定數量的段落,並且有不同的div標籤加載,但我只需要body_text內的內容。然後我認爲這可以存儲爲一個字符串,然後我想寫入一個.txt文件供以後參考。謝謝。

+1

複製http://stackoverflow.com/questions/2111332/select-all-ps-from-a-nodes-children-using-htmlagilit ypack?附:我不知道如何標記重複,或者我沒有足夠的分數? – Ozzy 2011-01-19 16:27:20

回答

3

您的情況下,有效的XPath是//div[@id='body_text']/p

foreach(HtmlNode node in yourHTMLAgilityPackDocument.DocumentNode.SelectNodes("//div[@id='body_text']/p") 
{ 
    string text = node.InnerText; //that's the text you are looking for 
} 
1

下面是抓住段落作爲HtmlNodes枚舉的解決方案:

HtmlDocument doc = new HtmlDocument(); 
doc.Load("your.html"); 
var div = doc.GetElementbyId("body_text"); 
var paragraphs = div.ChildNodes.Where(item => item.Name == "p"); 

沒有明確的Linq:

var paragraphs = doc.GetElementbyId("body_text").Elements("p");