Ich möchte den inneren Text von HTML-Tags durch einen anderen Text ersetzen. Ich verwende HtmlAgilityPack
Ich benutze diesen Code, um alle Texte zu extrahieren
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 ist jedoch schreibgeschützt. Wie kann ich Texte durch einen anderen Text ersetzen und in einer Datei speichern?
Versuchen Sie den folgenden Code. Es wählt alle Knoten ohne Kinder und herausgefiltert Skriptknoten. Vielleicht müssen Sie zusätzliche Filter hinzufügen. Zusätzlich zu Ihrem XPath-Ausdruck sucht dieser auch nach Blattknoten und filtert den Textinhalt von <script>
-Tags heraus.
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);
}
Seltsam, aber ich habe festgestellt, dass InnerHtml nicht schreibgeschützt ist. Und als ich versuchte es so einzustellen
aElement.InnerHtml = "sometext";
Der Wert von InnerText
ebenfalls in "sometext"
geändert.