Tener problemas con la inserción del nodo en un orden específico utilizando HTMLAgilityPack

asp.net-mvc-4 c# html-agility-pack nodes

Pregunta

Una vez más estoy perdido con HTMLAgility.

Aquí está la cadena HTML con la que estoy trabajando:

<table>...</table>

Estoy tratando de corregir esto agregando:

<table>...</table>

Aquí está mi código, puedo obtener todo menos el cuerpo. ¿Algún consejo?

<table>...</table>

Este código me está dando esto, como puede ver, <body> está en el lugar equivocado.

<table>...</table>

Respuesta aceptada

Puede intentar agregar el nodo <body> primero antes de agregar <head> , porque parece que desea que todo el contenido de <html> excepto <head> se coloque dentro de la etiqueta <body> :

.....
HtmlNode htmlBody = doc.DocumentNode.SelectSingleNode("//body");
if (htmlBody == null)
{
    htmlBody = doc.CreateElement("body");
    //move all child of <html> to be child of <body>
    HtmlNodeCollection htmlCollection = htmlNode.ChildNodes;
    htmlBody.AppendChildren(htmlCollection);
    htmlNode.RemoveAllChildren();
    //add <body> to <html>
    htmlNode.PrependChild(htmlBody);
}

//check if <head> exists, if not create <head>
HtmlNode head = doc.DocumentNode.SelectSingleNode("//head");
if (head == null)
{
    //add <head> to <html>
    head = doc.CreateElement("head");
    htmlNode.PrependChild(head);
}
.....



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é