Ersetzen Sie einen einzelnen Knoten mit mehreren Knoten mithilfe von HTML Agility Pack

.net c# html-agility-pack

Frage

Ich habe einige Eingabe-Tags, die Platzhalter sind, die ich mit etwas HTML ersetze. Die meiste Zeit, die ich durch HTML ersetze, ist nur ein Tag, was einfach genug ist:

HtmlNode node = HtmlNode.CreateNode(sReplacementString);
inputNode.ParentNode.ReplaceChild(node, inputNode);

Wenn ich jedoch inputNode durch zwei oder mehr Knoten HtmlNode.CreateNode(sReplacementString) liest HtmlNode.CreateNode(sReplacementString) nur den ersten Knoten. Gibt es eine Möglichkeit zu ersetzen, wo sReplacementString mehrere Tags ist?

Akzeptierte Antwort

Soweit ich weiß, gibt es keinen direkten Weg dazu. HtmlNode.CreateNode Methode erstellt einen einzelnen Knoten aus dem HTML-Snippet. Wenn mehrere Knoten vorhanden sind, wird nur der erste Knoten erstellt.

sReplacementString , können Sie einen temporären Knoten erstellen, seine sReplacementString Knoten aus sReplacementString und diese inputNode Knoten direkt nach dem Knoten inputNode anhängen und schließlich den inputNode entfernen.

var temp = doc.CreateElement("temp");
temp.InnerHtml = sReplacementString;
var current = inputNode;
foreach (var child in temp.ChildNodes)
{
    inputNode.ParentNode.InsertAfter(child, current);
    current = child;
}
inputNode.Remove();


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