У меня есть 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><s:message code = "test" /></title>
</head>
<body>
</body>
Каким-то образом символ < конвертируется в <. Как я могу получить оригинальный контекст без скейпа? На самом деле мне нужно найти элементы <s:message
но из-за побега он не находит элемент <s:message code = "test" />?




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 - это URL-адрес, откуда берется HTML, используемый для получения относительной ссылки. В вашем случае вам это не нужно
Я не понял, когда вы сказали Jsoup escapes because it's not a standard HTML tag, потому что в некоторых файлах он экранирует символ <, а в некоторых других файлах его нет?
<s:message /> не является стандартным тегом HTML, поэтому jsoup его избегает.
Но тот же код не выходит из <s:message /> в другом файле. Итак, в каком-то файле он ускользает, а в каком-то - нет. не уверен, почему это так?
что будет baseUri?