JSOUP отсутствует тег при преобразовании строки html - PullRequest
0 голосов
/ 06 апреля 2020

У меня проблема с jsoup, из-за которой я хочу получить строку данных, которую позже я буду вставлять в другой документ html. Но когда я проверял время увидел, что нет и тега. Как я могу решить это

String htmlcontent = "<tr><td colspan=\"2\"><div class=\"content-wrapper\"><p><strong><span class=\"CLASS 1 CLASS 2 CLASS 3\">123</span></strong><br /><strong>DATA 1</strong></p></td><td></td><td></td><td></td><td></td></tr>";


Document docnewinput = Jsoup.parse(htmlcontent, "UTF-8");

[<html>
 <head></head>
 <body>
  <div class="content-wrapper">
   <p><strong><span class="CLASS 1 CLASS 2 CLASS 3">123</span></strong><br><strong>DATA 1</strong></p>
  </div>
 </body>
</html>]

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Нужно использовать xmlParser (), чтобы он просто считывал строку без форматирования.

0 голосов
/ 06 апреля 2020

У вас есть фрагмент тела HTML (например, div, содержащий пару тегов p; в отличие от полного HTML документа), который вы хотите проанализировать.

Используйте Jsoup.parseBodyFragment(String html) method.

String html = "<table><tr><td colspan=\"2\"><div class=\"content-wrapper\"><p><strong><span class=\"CLASS 1 CLASS 2 CLASS 3\">123</span></strong><br /><strong>DATA 1</strong></p></td><td></td><td></td><td></td><td></td></tr></table>";
Document doc = Jsoup.parseBodyFragment(html);

Метод parseBodyFragment создает пустой документ оболочки и вставляет проанализированный HTML в элемент body. Если бы вы использовали обычный метод Jsoup.parse(String html), вы, как правило, получили бы тот же результат, но явная обработка ввода как фрагмента тела гарантирует, что любой бозо HTML, предоставленный пользователем, будет проанализирован в элементе тела.

Синтаксический анализатор будет делать все попытки создать чистый анализ из предоставленного вами HTML, независимо от того, правильно ли сформирован HTML или нет. Он обрабатывает: незакрытые теги (e.g. <p>Lorem <p>Ipsum parses to <p>Lorem</p> <p>Ipsum</p>) неявные теги (e.g. a naked <td>Table data</td> is wrapped into a <table><tr><td>...), надежно создающие структуру документа (html, содержащую заголовок и тело и только соответствующие элементы внутри заголовка)

РЕДАКТИРОВАТЬ:

Используя Jsoup.parse ():

String html = "<table><tr><td colspan=\"2\"><div class=\"content-wrapper\"><p><strong><span class=\"CLASS 1 CLASS 2 CLASS 3\">123</span></strong><br /><strong>DATA 1</strong></p></td><td></td><td></td><td></td><td></td></tr></table>";
Document doc = Jsoup.parse(html);

Рабочая демонстрация: https://try.jsoup.org/~EdJSrHl_biDcQkyhL2BLH5ZNnck

...