друг Мне нужно разобрать описание с url, где у разового содержимого есть несколько html-тегов, поэтому как я могу преобразовать его в обычный текст.
Как конвертировать HTML-текст в обычный текст?
Ответ 1
Простое избавление от HTML-тегов прост:
// replace all occurrences of one or more HTML tags with optional
// whitespace inbetween with a single space character
String strippedText = htmlText.replaceAll("(?s)<[^>]*>(\\s*<[^>]*>)*", " ");
Но, к сожалению, требования никогда не бывают такими простыми:
Обычно элементам <p>
и <div>
требуется отдельная обработка, могут быть блоки cdata с символами >
(например, javascript), которые испортят регулярное выражение и т.д.
Ответ 2
Вы можете использовать эту единственную строку, чтобы удалить теги html и отобразить ее как обычный текст.
htmlString=htmlString.replaceAll("\\<.*?\\>", "");
Ответ 3
Используйте парсер HTML, например htmlCleaner
Подробный ответ: Как удалить тег HTML в Java
Ответ 4
Я бы рекомендовал разобрать необработанный HTML через jTidy, который должен дать вам вывод, с которым вы можете писать выражения xpath. Это самый надежный способ поиска HTML-кода.
Ответ 5
Если вы хотите разобрать как отображение браузера, используйте:
import net.htmlparser.jericho.*;
import java.util.*;
import java.io.*;
import java.net.*;
public class RenderToText {
public static void main(String[] args) throws Exception {
String sourceUrlString="data/test.html";
if (args.length==0)
System.err.println("Using default argument of \""+sourceUrlString+'"');
else
sourceUrlString=args[0];
if (sourceUrlString.indexOf(':')==-1) sourceUrlString="file:"+sourceUrlString;
Source source=new Source(new URL(sourceUrlString));
String renderedText=source.getRenderer().toString();
System.out.println("\nSimple rendering of the HTML document:\n");
System.out.println(renderedText);
}
}
Я надеюсь, что это поможет разобрать таблицу также в формате браузера.
Спасибо, Ganesh