You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用HtmlAgilityPack提取节点自身文本排除子节点InnerText的方法

实现方案

在HtmlAgilityPack中,元素的ChildNodes属性包含了所有直接子节点,你只需要筛选出其中类型为HtmlNodeType.Text的节点拼接内容,即可拿到p节点自身的文本,不会包含span等子元素的内部内容。

完整代码示例

using HtmlAgilityPack;
using System.Linq;

// 加载HTML内容
string htmlContent = @"<p class=""MyClass"">
<span>Value:</span>
12345
</p>";
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(htmlContent);

// 定位到目标p节点
HtmlNode targetP = htmlDoc.DocumentNode.SelectSingleNode("//p[@class='MyClass']");

// 提取p节点自身的文本内容,去除首尾空白
string pOwnText = string.Join("", 
    targetP.ChildNodes
        .Where(node => node.NodeType == HtmlNodeType.Text)
        .Select(node => node.InnerText)
    ).Trim();

// 输出结果:12345
Console.WriteLine(pOwnText);

补充说明

  • 如果p节点下有多处分散的直接文本段,该方法会按顺序拼接所有文本,不会遗漏也不会引入子元素内部内容
  • 末尾的Trim()可根据需求决定是否保留,用于清除文本前后的换行、空格等空白字符

内容的提问来源于stack exchange,提问作者AlessandroF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:54:03