Мне нужно извлечь весь текст из фрагмента HTMl.Jsoup: Извлечь текст как человек прочитал бы его
Пример:
ВХОД: <p><div>how are</div> you doing?</p><p>I'm doing well</p>
ВЫВОД: how are you doing? I'm doing well
я нашел вопросы, такие, как этот Text Extraction from HTML Java, что имеют дело с подобными проблемами, но все они просто удалите теги <p>
, но не удаляйте внутренние элементы.
Изначально я пробовал перечислять через детей каждого тега <p>
и конкатенировать их содержимое, а также рекурсивно изучать каждого внука и конкатенировать его детей и так далее, пока не будет только текст. Проблема в том, что какой-то текст не окружен тегом и просто прост.
Я также пробовал Jsoup.parse(html).select("p").text()
, но я получаю "[]I'm doing well"
в качестве выхода.
Это похоже на очень распространенную потребность в программах типа веб-гусениц, но я не могу найти решение.
Это что-то злоупотребления HTML. Детский элемент подразумевает связанный, но отдельный контент. Поэтому почему вы пытаетесь найти подобное решение. То, что вам нужно реализовать, - это рекурсивное решение, обеспечивающее анализ всех дочерних элементов текущего элемента перед переходом в следующий. – christopher
@christopher Ohhhh ... Случайно я набрал 'div' вместо' span', когда писал свой модульный тест (который я впоследствии скопировал на этот вопрос). Если я заменил его тегами 'span', он будет работать сейчас. Извините, что тратить время. –