J'ai des balises d'entrée qui sont des espaces réservés que je remplace par du HTML. La plupart du temps, le code HTML avec lequel je les remplace n'est qu'une balise, ce qui est assez simple:
HtmlNode node = HtmlNode.CreateNode(sReplacementString);
inputNode.ParentNode.ReplaceChild(node, inputNode);
Toutefois, si je souhaite remplacer inputNode
par deux nœuds ou plus, HtmlNode.CreateNode(sReplacementString)
ne lit que le premier nœud. Existe-t-il un moyen de remplacer lorsque sReplacementString
est constitué de plusieurs balises?
Autant que je sache, il n'y a pas de moyen direct de le faire. HtmlNode.CreateNode
méthode HtmlNode.CreateNode
crée un seul nœud à partir de l'extrait de code HTML. S'il y a plusieurs nœuds, le premier est créé uniquement.
Pour sReplacementString
ce sReplacementString
, vous pouvez créer un nœud temporaire, créer ses nœuds enfants à partir de sReplacementString
, puis ajouter ces nœuds enfants juste après le nœud inputNode
, puis supprimer le 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();