2011-01-19 49 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");