HtmlAgilityPack设置节点InnerText

我想用另一个文本替换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表达式之外,还会查找叶节点并过滤掉标记的文本内容。

 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); } 

奇怪,但我发现InnerHtml不是只读的。 当我试图这样设置时

 aElement.InnerHtml = "sometext"; 

InnerText的值也改为"sometext"