我想从html页面中仅提取<p>, <br> and image tags
当我只提取<p>
个标签时,我正在执行以下操作:
var sb = new StringBuilder();
foreach (HtmlNode node in descriptionDiv.SelectNodes("//p"))
{
sb.Append(node.InnerText);
}
但我也需要img和br标签,如果我将一个接一个地重复这个方法,那么我将失去他们的订单。如何按顺序提取它们?
答案 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);
}