Проблема разбора Jsoup для тега сценария очистки (с тегом c) в файле Jsp - PullRequest
0 голосов
/ 01 октября 2019

У меня есть файл JSP, из которого мне нужно получить информацию о файле js из атрибута src тега script. это нормально работает для обычного простого тега сценария (как показано ниже)

<script src="/resources/js/jquery.min.js" ></script>

Я использую метод анализа библиотек Jsoup с кодировкой UTF-8 для анализа файла jsp в html-файл

Document htmlDocument = Jsoup.parse(file, "UTF-8");

Из документа (HTML-документ) я получаю коллекцию всех тегов сценария с атрибутом src, в цикле foreach я получаю сведения об атрибутах src из коллекции.

Фактический тег сценария:

<script src="<c:url value="/resources/js/jquery.min.js" />"></script>

Разобранный выходной сигнал Jsoup 1.8.1:

<script src="<c:url value=" esources="" s="" query.min.js"=""></script>"&gt; 

Разобранный выходной сигнал Jsoup 1.12.1:

<script src="<c:url value=" resources js jquery.min.js"></script>

Ожидаемый результат:

"/resources/js/jquery.min.js"

Фактический результат:

"<c:url value="

Может ли кто-нибудь пролить свет на проблему

1 Ответ

0 голосов
/ 01 октября 2019

Кажется, что парсеру JSoup не нравятся внутренние кавычки. Я бы не сказал, что это проблема JSoup, поскольку ваш анализ не соответствует стандарту HTML. Другими словами, я думаю, что JSoup работает так, как задумано (то же самое можно сказать и о форматировании кода в SO).

Я не уверен, что JSP будет работать так же, но когда я попытался поменяться местамивнутренние двойные кавычки для одинарных кавычек:

<script src="<c:url value'/resources/js/jquery.min.js' />"></script>

синтаксический анализ, кажется, работает, как вы ожидали

<c:url value'/resources/js/jquery.min.js' />
...