HtmlAgilityPack: Entfernen von Tags, Ersetzen durch Leerzeichen

c# html-agility-pack

Frage

string url = "http://www.myurl.xxx";
HtmlWeb webGet = new HtmlWeb();
HtmlDocument doc =  webGet.Load(url);

foreach(var script in doc.DocumentNode.Descendants("script").ToArray())
   script.Remove();


foreach(var style in doc.DocumentNode.Descendants("style").ToArray())
   style.Remove();

 string mtext =  doc.DocumentNode.InnerText;

Die Zeichenfolge mtext hat keinen Abstand zwischen Text, wo die Tags entfernt wurden. Wie kann ich die entfernten Tags durch einen Zeilenumbruch oder "" für alle Tag-Instanzen entfernen und ersetzen?

Akzeptierte Antwort

Sie entfernen nur die Knoten. Stattdessen sollten Sie diese Knoten durch die neuen ersetzen. Dadurch werden Ihre <script> und <style> -Knoten durch ein Leerzeichen ersetzt:

foreach (var node in doc.DocumentNode.SelectNodes("//script|//style").ToArray())
{
    var replacement = doc.CreateTextNode(" ");
    node.ParentNode.ReplaceChild(replacement, node);
}


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum