#javascript #java #html #jsoup #html-parsing
#javascript #ява #HTML #jsoup #html-синтаксический анализ #java
Вопрос:
Я анализирую HTML-строку, содержащую html-теги и теги javascript, используя следующее
public Document parse(String content) {
return Jsoup.parse(content, "", Parser.xmlParser());
}
Проблема в том, что элементы javascript были включены только в одну строку.
Кроме того, я попробовал с
public Document parse(String content) {
return Jsoup.parse(content, "", Parser.htmlParser());
}
и это прекрасно работает для Javascript… но HTML-элементы были включены без конечного тега. Бывший:
<link rel="shortcut icon" href="../../static/public/img/favicon.ico" data-th-remove="all"></link>
был проанализирован как
<link rel="shortcut icon" href="../../static/public/img/favicon.ico" data-th-remove="all">
Это не работает, когда я запускаю свое приложение.
Как я могу это исправить? Есть ли какой-нибудь способ проанализировать HTML и Javascript вместе с помощью JSOUP?
ПРИМЕЧАНИЕ: я только что создал следующую проблему на JSOUP GitHub https://github.com/jhy/jsoup/issues/774
С уважением,
Ответ №1:
У link
элемента нет закрывающего тега в HTML. Это происходит только в заголовке. Смотрите https://developer.mozilla.org/de/docs/Web/HTML/Element/link для пояснений.
Итак, JSoup ведет себя так, как ожидалось, когда вы используете Parser.htmlParser()
Cab вы объясните более подробно, почему вы не можете обработать незакрытый link
тег?
Комментарии:
1. Спасибо за ваш комментарий. Наконец, проблема заключалась в том, что я использовал Thymeleaf 2.1.5, предоставляемый Spring IO Platform. В этой версии Thymeleaf для разбора HTML-файла используется анализатор XML, поэтому все теги должны иметь свой собственный конечный тег. Обновление до Thymeleaf 3.0 и использование
Parser.htmlParser()
я решил проблему. Чтобы увидеть подробное объяснение решения, проверьте проблему на GitHub github.com/jhy/jsoup/issues/774 . С уважением и благодарностью за вашу помощь.