Как использовать библиотеку Java "HTML Parser" для удаления всех тегов <style>? - PullRequest
1 голос
/ 21 декабря 2011

Мне нужно выполнить несколько действий с html-файлом, например удалить определенный тег или удалить атрибуты. Я решил использовать HTML Parser, библиотеку Java: http://htmlparser.sourceforge.net/

Прежде всего, я хочу удалить все теги стилей. Мне удалось получить NodeList, содержащий все теги стилей, выполнив это:

Parser parser = new Parser (url);
NodeList list = parser.parse (null);            
NodeList styles = list.extractAllNodesThatMatch (new TagNameFilter ("STYLE"), true);

Теперь я не знаю, как удалить атрибуты этого стиля из всего списка узлов. Должен ли я получить весь список?

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

1 Ответ

4 голосов
/ 21 декабря 2011

Из документации Parser возвращает список деревьев, который содержит все узлы вашего html (представьте анализатор как корневой узел большого дерева Node, и каждый "уровень" этого дерева является NodeList).

Вы можете рекурсивно перебирать дерево, проверять тип каждого узла по StyleTag и удалять его из соответствующего NodeList, когда это применимо. Продолжайте спускаться в дерево рекурсивно, пока не посетите все его узлы.

NodeTreeWalker ваш друг и может помочь вам с рекурсивным обходом дерева.

jsoup - еще одна хорошая альтернатива, которая имеет более простой интерфейс (см. Этот вопрос ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...