Поддерживает ли JSoup getComputedStyle или его эквивалент?

Поддерживает ли дерево документа, возвращаемое JSoup при анализе HTML-документа, getComputedStyle для отдельных элементов документа?

Что я хотел бы сделать, так это встроить CSS в фрагмент HTML, чтобы я мог вставить фрагмент в более крупный HTML-документ с сохранением всего его форматирования, но без вмешательства в какое-либо другое форматирование в документе.

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

Да, я понимаю, что это может очень сильно раздуть результирующий HTML, помещая кучу избыточной/ненужной информации о стилях в отдельные элементы, но я готов заплатить цену за больший HTML, и, насколько я могу судить, встраивание такой встроенный стиль — единственный способ точно сохранить форматирование, а также сделать фрагменты HTML полностью переносимыми. (Если у вас есть другое предложение для достижения этой цели, я весь внимание. :-)

Возвращаясь к теме... Если я не могу использовать getComputedStyle (или его эквивалент) с JSoup, существует ли другой парсер Java HTML+CSS, который поддерживает getComputedStyle или его аналог?

Спасибо.


person Jonathan Kamens    schedule 09.09.2011    source источник


Ответы (1)


Это невозможно. Jsoup — это просто анализатор HTML с поддержкой селектора CSS, а не средство визуализации HTML.

Вы можете взглянуть на Lobobrowser, который представляет собой средство визуализации HTML на основе Java, поддерживающее JavaScript и тому подобное. Я не знаю и не гарантирую, что getComputedStyle() поддерживается Lobo.

Никакие другие инструменты не приходят на ум. HtmlUnit подходит близко, так как он также может получать доступ/вызывать JavaScript, но некоторые результаты Google предполагают, что getComputedStyle() также не работает на HtmlUnit. В конце концов, это также не настоящий HTML-рендерер.

person BalusC    schedule 10.09.2011
comment
У Lobo не было новых выпусков с 2009 года, поэтому он, похоже, заброшен. Я не думаю, что мы хотим решить эту проблему с помощью стороннего кода, который никто не поддерживает. - person Jonathan Kamens; 12.09.2011
comment
Итак, если для этого нет готового инструмента, то я думаю, что нам нужно сделать, чтобы реализовать его самостоятельно (псевдокод): найти каждую встроенную или связанную таблицу стилей в HTML для каждой встроенной или связанной таблицы стилей. в обратном порядке проанализируйте таблицу стилей для каждого спецификатора стиля в ней выберите все соответствующие узлы в HTML добавьте указанный стиль в начало стиля узла Порядок важен для обеспечения того, чтобы более поздние стили имели приоритет над более ранними. Это звучит правильно? (Не уверен, почему код не отображается как предварительный.) - person Jonathan Kamens; 12.09.2011