Tengo algunas etiquetas de entrada que son marcadores de posición que estoy reemplazando con algún HTML. La mayoría de las veces, el HTML con el que los estoy reemplazando es solo una etiqueta, lo cual es bastante fácil:
HtmlNode node = HtmlNode.CreateNode(sReplacementString);
inputNode.ParentNode.ReplaceChild(node, inputNode);
Sin embargo, si quiero reemplazar inputNode
con dos o más nodos, HtmlNode.CreateNode(sReplacementString)
solo lee el primer nodo. ¿Hay una manera de hacer un reemplazo donde sReplacementString
es múltiples etiquetas?
Que yo sepa, no hay una forma directa de hacerlo. HtmlNode.CreateNode
método HtmlNode.CreateNode
crea un solo nodo desde el fragmento de código HTML, si hay varios nodos allí, el primero se crea solo.
Como solución alternativa, puede crear un nodo temporal, crear sus nodos secundarios desde sReplacementString
y luego agregar estos nodos secundarios justo después del nodo inputNode
y, finalmente, eliminar el 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();