Как отменить экранирование документа Jsoup?

У меня есть html файл, который содержит содержимое ниже:

<html>
    <title><s:message code = "test" /></title>
</html>

Программа на Java:

String input = readFileAsString(filePath);
Document doc = Jsoup.parse(input);

Elements messageEls = doc.select("s|message");

Я вижу результат, как показано ниже:

<html>
 <head>
  <title>&lt;s:message code = "test" /&gt;</title> 
 </head>
 <body> 
 </body>

Каким-то образом символ < конвертируется в &lt. Как я могу получить оригинальный контекст без скейпа? На самом деле мне нужно найти элементы <s:message но из-за побега он не находит элемент <s:message code = "test" />?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
613
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Jsoup ускользает, потому что <s:message /> не является стандартным тегом HTML.

Попробуйте использовать Синтаксический анализатор XML:

Document doc = Jsoup.parse(input, "", Parser.xmlParser());

Create a new XML parser. This parser assumes no knowledge of the incoming tags and does not treat it as HTML, rather creates a simple tree directly from the input.

что будет baseUri?

emilly 18.05.2018 16:22

См. Мой отредактированный ответ. baseUri - это URL-адрес, откуда берется HTML, используемый для получения относительной ссылки. В вашем случае вам это не нужно

Mạnh Quyết Nguyễn 18.05.2018 16:28

Я не понял, когда вы сказали Jsoup escapes because it's not a standard HTML tag, потому что в некоторых файлах он экранирует символ <, а в некоторых других файлах его нет?

emilly 18.05.2018 16:36
<s:message /> не является стандартным тегом HTML, поэтому jsoup его избегает.
Mạnh Quyết Nguyễn 18.05.2018 16:37

Но тот же код не выходит из <s:message /> в другом файле. Итак, в каком-то файле он ускользает, а в каком-то - нет. не уверен, почему это так?

emilly 19.05.2018 04:16

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