【问题标题】:C#, Html Agility, Selecting every paragraph within a div tagC#, Html Agility, 选择 div 标签内的每个段落
【发布时间】:2011-06-11 21:16:09
【问题描述】:
例如,如何选择 div 标签中的每个段落。
<div id="body_text">
<p>Hi</p>
<p>Help Me Please</P>
<p>Thankyou</P>
我已经下载并在我的程序中引用了 Html Agility,我需要的只是段落。可能有可变数量的段落,并且有很多不同的 div 标签,但我只需要 body_text 中的内容。然后我假设这可以存储为一个字符串,然后我想将其写入 .txt 文件以供以后参考。谢谢。
【问题讨论】:
标签:
c#
html
html-agility-pack
【解决方案1】:
适用于您的案例的有效 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
}
【解决方案2】:
这是一个将段落作为 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");