Duplicazione di HtmlNode in HtmlAgilityPack?

c# html-agility-pack xpath

Domanda

Sto usando HTML Agility Pack per fare due cose diverse sulla stessa pagina.
Per il primo ho bisogno di rimuovere elementi come script, stile, ecc. Tuttavia, per il secondo, devo mantenere tutti gli elementi.

Dal momento che non posso fare la seconda parte prima del primo, sto cercando un modo per duplicare l'oggetto all'inizio, così posso salvare tutti gli elementi per la seconda parte. Questo è il codice che ho provato, ma per alcuni reson non ho i nodi al suo interno.

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

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

Un altro modo in cui ho pensato è di invertire l'xpath che seleziona tutti gli elementi che ho da rimuovere. quindi sarò in grado di selezionarli senza rimuovere veramente elementi dall'oggetto. Ma non riesco a capire come utilizzare la funzione XPath "not ()" per invertire la mia query. questa è la mia query XPath:

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

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

Grazie per il tuo tempo e aiuto :)

Risposta popolare

Sto facendo qualcosa di simile. Ho dovuto ottenere queste informazioni e convertirle in XML. Ecco di cosa hai bisogno:

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

Se lo elaborerai ulteriormente, dovrai continuare a fare riferimento a ciascun HtmlNode.




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché