Дублирование HtmlNode в HtmlAgilityPack?

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:

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

Спасибо за ваше время и помощь :)

Популярные ответы

Я делаю что-то подобное. Мне нужно было получить эту информацию, а затем преобразовать ее в 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
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему