Dupliquer HtmlNode dans HtmlAgilityPack?

c# html-agility-pack xpath

Question

J'utilise HTML Agility Pack pour faire deux choses différentes sur la même page.
Pour le premier, je dois supprimer des éléments tels que script, style, etc. Cependant, pour le second, je dois conserver tous les éléments.

Comme je ne peux pas faire la deuxième partie avant la première, je cherche d'abord un moyen de dupliquer l'objet, afin de pouvoir sauvegarder tous les éléments de la deuxième partie. C’est le code que j’ai essayé, mais pour certaines raisons, je n’obtiens pas les nœuds.

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

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

Une autre méthode à laquelle j'ai pensé consiste à inverser le xpath qui sélectionne tous les éléments que je souhaite supprimer. je vais donc pouvoir les sélectionner sans supprimer réellement les éléments de l'objet. Mais je ne vois pas comment utiliser la fonction XPath "not ()" pour inverser ma requête. c'est ma requête XPath:

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

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

Merci pour votre temps et votre aide :)

Réponse populaire

Je fais quelque chose de similaire. Je devais obtenir cette information puis la convertir en XML. Voici ce dont vous avez besoin:

        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 vous voulez traiter cela plus avant, vous devrez continuer à référencer chaque HTMLNode.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi