Sostituisci un singolo nodo con più nodi utilizzando HTML Agility Pack

.net c# html-agility-pack

Domanda

Ho alcuni tag di input che sono segnaposto che sto sostituendo con HTML. Un sacco di tempo in cui l'HTML con cui li sto sostituendo è solo un tag, che è abbastanza facile:

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

Tuttavia, se voglio sostituire inputNode con due o più nodi, HtmlNode.CreateNode(sReplacementString) legge solo il primo nodo. C'è un modo per fare una sostituzione dove sReplacementString è più tag?

Risposta accettata

Per quanto ne so, non esiste un modo diretto per farlo. HtmlNode.CreateNode metodo HtmlNode.CreateNode crea un singolo nodo dallo snippet HTML, se sono presenti più nodi, viene creato solo il primo.

Come soluzione alternativa, è possibile creare un nodo temporaneo, creare i relativi nodi figlio da sReplacementString e quindi aggiungere questi nodi inputNode subito dopo il nodo inputNode e, infine, rimuovere il inputNode .

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



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché