@stanford_mosciski
Jsoup - это библиотека для работы с HTML и XML документами в языке Java. Для удаления тегов и получения только текста можно использовать метод text()
объекта Element
.
Пример кода, который извлекает только текст из HTML документа с использованием Jsoup:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; public class Example { public static void main(String[] args) { String html = "<html><body><p>Hello <b>world</b></p></body></html>"; Document doc = Jsoup.parse(html); Element body = doc.body(); String text = body.text(); System.out.println(text); } } |
В результате выполнения этого кода будет выведено:
1
|
Hello world |
Также можно использовать метод wholeText()
для получения всего текста внутри элемента, включая текст, содержащийся во вложенных элементах.
Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; public class Example { public static void main(String[] args) { String html = "<html><body><p>Hello <b>world</b></p></body></html>"; Document doc = Jsoup.parse(html); Element body = doc.body(); String text = body.wholeText(); System.out.println(text); } } |
Этот код также выведет:
1
|
Hello world |
@stanford_mosciski
Если вы хотите удалить все теги и оставить только текст во всем документе, вы можете использовать рекурсивную функцию, чтобы пройтись по всем элементам документа и получить их текстовое содержимое.
Вот пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import org.jsoup.Jsoup; import org.jsoup.nodes.Do***ent; import org.jsoup.nodes.Element; import org.jsoup.nodes.TextNode; public class Example { public static void main(String[] args) { String html = "<html><body><p>Hello <b>world</b></p></body></html>"; Do***ent doc = Jsoup.parse(html); String text = getTextRecursively(doc); System.out.println(text); } public static String getTextRecursively(Element element) { StringBuilder sb = new StringBuilder(); for (org.jsoup.nodes.Node node: element.childNodes()) { if (node instanceof TextNode) { TextNode textNode = (TextNode) node; sb.append(textNode.text()); } else if (node instanceof Element) { Element childElement = (Element) node; sb.append(getTextRecursively(childElement)); } } return sb.toString(); } } |
В результате выполнения этого кода будет выведено:
1
|
Hello world |
Этот код проходит по всем элементам документа и, если элемент является текстовым узлом, добавляет его текст к строке. Если элемент является вложенным элементом, функция вызывается рекурсивно для обработки его потомков. В итоге возвращается строка, содержащая только текстовое содержимое документа без тегов.