在HtmlAgilityPack中復制HtmlNode?

c# html-agility-pack xpath

我正在使用HTML Agility Pack在同一頁面上執行兩項不同的操作。
對於第一個我需要刪除像腳本,樣式等元素。但是對於第二個,我必須保留所有元素。

由於我不能在第一部分之前完成第二部分,我正在尋找一種方法來複製對象,所以我可以保存第二部分的所有元素。這是我試過的代碼,但是對於一些共鳴,我沒有得到它內部的節點。

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

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

我想到的另一種方法是反轉選擇我要移除的所有元素的xpath。所以我將能夠選擇它們,而無需從對像中刪除元素。但我無法弄清楚如何使用XPath“not()”函數來反轉我的查詢。這是我的XPath查詢:

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

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

謝謝你的時間和幫助:)

熱門答案

我正在做類似的事情。我必須獲取此信息,然後將其轉換為XML。這是你需要的:

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

如果您要進一步處理此問題,則需要繼續引用每個HtmlNode。




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因