【问题标题】:HtmlAgilityPack select only inner text NodeHtmlAgilityPack 仅选择内部文本节点
【发布时间】:2016-06-17 06:48:13
【问题描述】:

这是我较大的 html 文件的示例 html 输入部分。

string html = "<html> <p>Ingredients:</p> </html>";

我只想检索具有内部文本成分的节点。 成分可能出现在 html 节点 p、div、strong 等中。

我使用 HtmlAgility 包和 linq 实现此目的的 c# 代码是

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);

List<HtmlNode> ingredientList = doc.DocumentNode.Descendants().Where
                        (x => x.InnerText.Contains("Ingredients:")).ToList();

这段代码的结果给了我 3 个节点

<html> node
<p> node
#text node

我只想检索

<p> node

【问题讨论】:

    标签: c# html linq


    【解决方案1】:

    如果您的平台支持 XPath,即 HtmlAgilityPack 的 SelectNodes() 方法可用,您可以使用 XPath 表达式来获取其直接子文本节点之一包含关键字的元素:

    List<HtmlNode> ingredientList = doc.DocumentNode
                                       .SelectNodes("//*[text()[contains(.,'Ingredients:')]]")
                                       .ToList();
    

    【讨论】:

      猜你喜欢
      • 2012-08-17
      • 1970-01-01
      • 2014-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      相关资源
      最近更新 更多