ich habe das
Der Körper:
<body><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent leo leo, ultrices eu venenatis et, rutrum fringilla dolor.</p></body>
Der Code:
HtmlNode body = doc.DocumentNode.SelectSingleNode("//body");
Dictionary<HtmlNode, HtmlNode> toReplace = new Dictionary<HtmlNode, HtmlNode>();
// I do some logic here adding nodes to the toReplace dictionary.
foreach (HtmlNode replaceNode in toReplace.Keys)
{
replaceNode.ParentNod.ReplaceChild(toReplace[replaceNode], replaceNode);
}
Nachdem ich dies getan habe, bleibt der InnerHtml des Body-Knotens derselbe wie von Anfang an, obwohl der OutterHtml oder der InnerText das gute Ergebnis zeigen. Stimmt etwas mit meinem Code nicht?
Das Ergebnis:
// body.InnerHtml
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent leo leo, ultrices eu venenatis et, rutrum fringilla dolor.</p>
// body.OutterHtml
<body><p>Lorem ipsum dolor sit amet...</p></body>
Ich denke, es könnte etwas damit zu tun haben, wie Sie Knoten hinzufügen, um alte Knoten zu ersetzen. Sehen Sie, ob diese Lösung für Sie funktioniert, um den Textknoten zu kürzen. Ich machte einen schnellen Test und alle drei gaben mir die gleichen Ergebnisse.
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlString);
HtmlNode body = doc.DocumentNode.SelectSingleNode("//body");
foreach (var paragraph in body.Descendants("p"))
{
paragraph.InnerHtml = paragraph.InnerHtml.Substring(0, 25) + "...";
}
Console.WriteLine(body.InnerHtml);
Console.WriteLine(body.InnerText);
Console.WriteLine(body.OuterHtml);