parse htmldocument htmlagilitypack agility c# parsing html-parsing html-agility-pack

c# - htmldocument - HtmlAgilityPack set node InnerText



htmlagilitypack xpath (2)

Extraño, pero descubrí que InnerHtml no es de solo lectura. Y cuando traté de configurarlo así

aElement.InnerHtml = "sometext";

el valor de InnerText también cambió a "sometext"

Quiero reemplazar el texto interno de las etiquetas HTML con otro texto. Estoy usando HtmlAgilityPack
Uso este código para extraer todos los textos

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 ? }

Pero InnerText es de solo lectura. ¿Cómo puedo reemplazar textos con otro texto y guardarlos en un archivo?


Prueba el código a continuación. Selecciona todos los nodos sin hijos y los nodos de script filtrados. Quizás necesite agregar algún filtro adicional. Además de su expresión XPath, esta también busca nodos hoja y filtra el contenido de texto de las etiquetas <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); }