Избегайте конкатенации без пробелов с помощью JSoup

Предположим, у меня есть div как таковой:

<div>
This is a paragraph
written by someone
on the internet.
</div>

Проблема в том, что когда JSoup анализирует это, он помещает все это в одну строку, поэтому, когда я вызываю text(), он читается как таковой:

This is a paragraphwritten by someoneon the internet.

Теперь я понимаю, что на самом деле это не проблема JSoup, поскольку фактический html не содержит пробелов. Однако есть ли способ использовать JSoup (возможно, какое-то переопределение или, может быть, вариант, который я не видел), чтобы при анализе он добавлял пробел между строками? Я предполагаю, что это должно быть возможно (поскольку я могу проверить элемент в Chrome и отменить перенос слов, и он получит то, что я хочу), но я не уверен, что JSoup может это сделать.

Есть предположения?


person AHungerArtist    schedule 20.08.2011    source источник


Ответы (2)


следующий пост показывает, как вы получаете все, включая разрыв строки

Удаление объектов HTML при сохранении разрывов строк с помощью JSoup

ответ и комментарий в следующем также имеют другой способ (прочитайте комментарий в нем)

Удалить теги HTML из строки

и у этого есть еще один способ, если вы проверите все ответы и комментарии

Как Я сохраняю разрывы строк при использовании jsoup для преобразования html в обычный текст?

person Community    schedule 20.08.2011
comment
Мне нужно поработать над своими поисковыми навыками. Спасибо. Приму, когда время позволит. - person AHungerArtist; 20.08.2011

Можете ли вы предоставить полный пример вашего кода? Какую версию jsoup вы используете?

В текущей версии (1.6.1) этот код:

Document doc = Jsoup.parse("<div>\n" +
    "This is a paragraph\n" +
    "written by someone\n" +
    "on the internet.\n" +
    "</div>");
System.out.println(doc.text());

Производит:

This is a paragraph written by someone on the internet.

То есть \n\r\n и т. д.) преобразуются в текст как пробелы.

С удовольствием исправлю или улучшу, если смогу повторить :)

person Jonathan Hedley    schedule 28.08.2011
comment
На самом деле, с Jsoup все в порядке, именно так я читал данные (кстати, JSoup довольно крут). Если бы я только что сделал простой тест, подобный приведенному выше, я бы знал, что нужно искать в другом месте раньше. Однако теперь мне любопытно, возможно ли, чтобы JSoup не анализировал новые строки? - person AHungerArtist; 29.08.2011
comment
Да, новые строки сохраняются и нормализуются только при выводе .text(). Вы можете получить их, обратившись к TextNode для текста и нажав .getWholeText() - jsoup.org/apidocs/org/jsoup/nodes/TextNode.html#getWholeText() - person Jonathan Hedley; 30.08.2011