C #, Html Agility, выбор каждого абзаца внутри тега div - PullRequest
4 голосов
/ 19 января 2011

Как я могу выбрать каждый абзац в теге div, например.

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

Я загрузил Html Agility и на него есть ссылки в моей программе. Все, что мне нужно, это абзацы.Может быть переменное количество абзацев и множество различных тегов div, но мне нужно только содержимое body_text.Затем я предполагаю, что это может быть сохранено как строка, которую я затем хочу записать в файл .txt для дальнейшего использования.Thankyou.

Ответы [ 2 ]

3 голосов
/ 19 января 2011

Действительный 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 голос
/ 19 января 2011

Вот решение, которое захватывает абзацы как перечисление 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");  
...