Как удалить некоторые (или все) элементы и / или атрибуты HTML с помощью HTML Agility Pack?

Используя HTML Agility Pack, как я могу удалить все атрибуты HTML, элементы и т. Д. Из двоичного объекта HTML, получив результат, как если бы я вставил его в блокнот?

Кроме того, мне нужно удалить все форматирование, но мне нужно сохранить теги UL/LI и B.

1 ответ

Решение

Введите html в экземпляр HtmlDocument, вы можете получить HtmlNode, возвращаемый свойством DocumentNode, и оттуда получить свойство InnerText узла документа. Это даст вам весь текст без тегов HTML.

Если вы хотите включить в свою фильтрацию только определенное подмножество узлов, то это будет немного сложнее.

Во-первых, вы должны загрузить содержимое в экземпляр HtmlDocument и получить экземпляр HtmlNode, возвращаемый свойством DocumentNode (я буду называть этот узел из этого документа корневым узлом).

В то же время вы также должны создать второй экземпляр HtmlDocument, который будет содержать новый документ, который вы создаете.

В первом документе вы рекурсивно перебираете корневой узел (обратите внимание, что это не обязательно должен быть рекурсивный метод, но семантически это будет рекурсивное поведение), анализируя узел и все его дочерние узлы.

Если сам узел является одним из узлов, которые вы одобряете, то вы начинаете создавать новый экземпляр этого узла.

Однако, если это не так, вы все равно обрабатываете дочерние узлы элемента, получая содержимое текстового узла (так как текст сам по себе является узлом) и добавляя его к любому текущему узлу в стеке (если он есть).

Другие вопросы по тегам