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