HtmlNode in HtmlAgilityPack duplizieren?

c# html-agility-pack xpath

Frage

Ich verwende HTML Agility Pack, um zwei verschiedene Dinge auf derselben Seite auszuführen.
Für die erste muss ich Elemente wie Skript, Stil usw. entfernen. Für die zweite muss ich jedoch alle Elemente behalten.

Da ich den zweiten Teil vor dem ersten Teil nicht machen kann, suche ich nach einer Möglichkeit, das Objekt zuerst zu duplizieren, damit ich alle Elemente für den zweiten Teil speichern kann. Das ist der Code, den ich ausprobiert habe, aber für einige resoniere ich nicht die Knoten darin.

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

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

Ein anderer Weg, an den ich gedacht habe, ist das Invertieren des XPath, der alle Elemente auswählt, die ich entfernen soll. Ich kann also nur diese auswählen, ohne Elemente wirklich aus dem Objekt zu entfernen. Aber ich kann nicht herausfinden, wie man die XPath "not ()" Funktion verwendet, um meine Abfrage zu invertieren. Das ist meine XPath-Abfrage:

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

Danke für deine Zeit und Hilfe :)

Beliebte Antwort

Ich mache etwas ähnliches. Ich musste diese Informationen erhalten und sie dann in XML konvertieren. Hier ist was du brauchst:

        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;
        }

Wenn Sie dies weiter verarbeiten möchten, müssen Sie weiterhin auf jeden HtmlNode verweisen.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum