使用HtmlAgilityPack从html页面获取图像,br和p-标签

时间:2014-03-03 15:56:05

标签: c# asp.net html-agility-pack

我想从html页面中仅提取<p>, <br> and image tags

当我只提取<p>个标签时,我正在执行以下操作:

var sb = new StringBuilder();
foreach (HtmlNode node in descriptionDiv.SelectNodes("//p"))
{
  sb.Append(node.InnerText);
}

但我也需要img和br标签,如果我将一个接一个地重复这个方法,那么我将失去他们的订单。如何按顺序提取它们?

2 个答案:

答案 0 :(得分:1)

您只需要检索后代节点并使用Where子句过滤它们。

foreach (var node in descriptionDive
            .DescendantNodes()
            .Where(x => x.Name == "p" || x.Name == "br" || x.Name == "img" ))
{
  sb.Append(node.InnerText);
}

答案 1 :(得分:1)

或者您可以通过以下方式继续使用Xpath:

var xpath = "//*[self::a or self::br or self::img]";
foreach (var node in doc.DocumentNode.SelectNodes(xpath))
{
   sb.Append(node.InnerText);            
}