¿Duplicar HtmlNode en HtmlAgilityPack?

c# html-agility-pack xpath

Pregunta

Estoy usando HTML Agility Pack para hacer dos cosas diferentes en la misma página.
Para el primero necesito eliminar elementos como el script, el estilo, etc. Sin embargo, para el segundo, debo mantener todos los elementos.

Como no puedo hacer la segunda parte antes de la primera, estoy buscando una forma de duplicar el objeto al principio, así que puedo guardar todos los elementos para la segunda parte. Ese es el código que probé, pero por algún motivo no consigo los nodos en su interior.

        HtmlDocument HTMLdoc = new HtmlDocument();
        HTMLdoc.LoadHtml(sFetch);

        //duplicate document node
        var webPage = HtmlNode.CreateNode("<html></html>");
        webPage.CopyFrom(HTMLdoc.DocumentNode,true);

Otra forma en la que he pensado es invertir el xpath que selecciona todos los elementos con los que quiero eliminar. así podré seleccionarlos sin eliminar realmente los elementos del objeto. Pero no puedo entender cómo usar la función XPath "not ()" para invertir mi consulta. esa es mi consulta XPath:

"//script | //style | //iframe | //select | //textarea | //comment() | //a[@href]"

Gracias por tu tiempo y ayuda :)

Respuesta popular

Estoy haciendo algo similar. Tuve que obtener esta información y luego convertirla a XML. Esto es lo que necesita:

        HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
        htmlDoc.LoadHtml(sfetch);

        HtmlNodeCollection page = htmlDoc.DocumentNode.SelectNodes("//table");//whatever tags your are looking for in your doc

        foreach (HtmlNode value in page)
        {
            richTxtboxFilteredHTML.Text += value.InnerText;
        }

Si va a procesar esto más, deberá seguir haciendo referencia a cada HtmlNode.



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é