¿Cómo agregar HtmlGenericControl a un HtmlNode?

c# html html-agility-pack htmlgenericcontrol

Pregunta

Estoy atascado, esto debe ser muy simple de lograr pero no estoy viendo cómo.

Tengo este codigo

 var divEl = doc.DocumentNode.SelectSingleNode("//div[@id='" + field.Id + "']");

 var newdiv = new HtmlGenericControl("div");
 newdiv.Attributes.Add("id", label.ID);
 newdiv.Attributes.Add("text", label.Text);
 newdiv.Attributes.Add("class", label.CssClass);

Y necesito hacer algo como esto:

    divEl.AppendChild(newdiv); //not working its expecting a HtmlNode, not a HtmlGenericControl

¿Cómo puedo convertir esto?

Gracias por cualquier respuesta por adelantado, chapas.

Respuesta aceptada

Pruebe el siguiente código. Tendrá que hacer algunos cambios. controla innerHTML está bien formado y puede usarse como innerXML para un xmlNode

XmlDocument doc = new XmlDocument();
//Load your xml here TODO
var divEl = doc.DocumentElement.SelectSingleNode("//div[@id='test']"); //Change your xpath here TODO
var newdiv = new HtmlGenericControl("div"); 
newdiv.Attributes.Add("id", "id"); 
newdiv.Attributes.Add("text", "text"); 
newdiv.Attributes.Add("class", "class");

XmlNode newNode = doc.CreateNode("NodeType", "NodeName", "URI/if/any"); //update your variables here
newNode.InnerXml = newdiv.InnerHtml;
divEl.AppendChild(newNode);

Espero que esto ayude


Respuesta popular

¿Por qué no crear el nodo utilizando la API de HAP? Debería funcionar de manera muy similar.

var newDiv = HtmlNode.CreateNode("<div/>");
newDiv.Attributes.Add("id", label.ID);
newDiv.Attributes.Add("text", label.Text);
newDiv.Attributes.Add("class", label.CssClass);

divEl.AppendChild(newDiv);

No hay una manera fácil de obtener el HTML externo de la instancia HtmlGenericControl (AFAIK). Si lo tuviera, simplemente podría pasar el HTML al método HtmlNode.CreateNode() para crearlo. Pero sugiero encarecidamente que no intente hacer que funcione.




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué