c# - HtmlAgilityPack 设置节点 InnerText

标签 c# parsing html-parsing html-agility-pack

我想用另一个文本替换 HTML 标记的内部文本。 我正在使用 HtmlAgilityPack
我用这段代码提取所有文本

HtmlDocument doc = new HtmlDocument();
doc.Load("some path")

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//text()[normalize-space(.) != '']")) {
    // How to replace node.InnerText with some text ?
}

但是 InnerText 是只读的。如何用其他文本替换文本并将它们保存到文件?

最佳答案

尝试下面的代码。它选择所有没有子节点的节点并过滤掉脚本节点。也许您需要添加一些额外的过滤。除了你的 XPath 表达式之外,这个表达式还寻找叶节点并过滤掉 <script> 的文本内容。标签。

var nodes = doc.DocumentNode.SelectNodes("//body//text()[(normalize-space(.) != '') and not(parent::script) and not(*)]");
foreach (HtmlNode htmlNode in nodes)
{
    htmlNode.ParentNode.ReplaceChild(HtmlTextNode.CreateNode(htmlNode.InnerText + "_translated"), htmlNode);
}

关于c# - HtmlAgilityPack 设置节点 InnerText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8274421/

相关文章:

java - Scala 解析器组合器与 ANTLR/Java 生成的解析器?

php - 使用 PHP 解析 HTML 并在下一个 h2 之前的 h2 之后获取所有 h3

html - html : markup is correct but dev tools show &lt;title&gt; moving to <body> 的奇怪问题

c# - Asp.Net Core 是否跨请求保留 CallContext?

c# - 将域指向 IIS 站点的子文件夹

c# - 如何使用两个键在 C# 中创建字典?

javascript - JS中解析数字时无限循环

c# - 如何在屏幕上渲染图像 C#

arrays - XML 仅显示 Swift 数组中的最后一项

python - 如何限制beautifulsoup中select标签的结果?