Преобразование символов HTML в текст с помощью стандартной библиотеки Java
Я хотел бы преобразовать некоторые символы HTML в текст, используя стандартную библиотеку Java. Мне было интересно, сможет ли какая-нибудь библиотека достичь моей цели?
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
// "Happy & Sad" in HTML form.
String s = "Happy & Sad";
System.out.println(s);
try {
// Change to "Happy & Sad". DOESN'T WORK!
s = java.net.URLDecoder.decode(s, "UTF-8");
System.out.println(s);
} catch (UnsupportedEncodingException ex) {
}
}
Ответы
Ответ 1
Я думаю, что библиотеки Apache Commons Lang StringEscapeUtils.unescapeHtml3()
и unescapeHtml4()
- это то, что вы ищете. Смотрите https://commons.apache.org/proper/commons-text/javadocs/api-release/org/apache/commons/text/StringEscapeUtils.html.
Ответ 2
Здесь вам нужно просто добавить jar файл в lib jsoup в ваше приложение, а затем использовать этот код.
import org.jsoup.Jsoup;
public class Encoder {
public static void main(String args[]) {
String s = Jsoup.parse("<Français>").text();
System.out.print(s);
}
}
Ссылка для загрузки jsoup: http://jsoup.org/download
Ответ 3
java.net.URLDecoder
касается только формата application/x-www-form-urlencoded
MIME (например, "%20" представляет пробел), а не с HTML-символьные объекты. Я не думаю, что на платформе Java есть что-то. Вы можете написать свой собственный класс утилиты для преобразования, например этот.
Ответ 4
Декодер URL должен использоваться только для декодирования строк из URL-адресов, сгенерированных форматами html, которые находятся в типе mime-типа application/x-www-form-urlencoded. Это не поддерживает html-символы.
После search я нашел Translate в библиотеке HTML Parser.
Ответ 5
Вы можете использовать класс org.apache.commons.lang.StringEscapeUtils:
String s = StringEscapeUtils.unescapeHtml("Happy & Sad")
Он работает.
Ответ 6
Я не знаю, как это сделать, используя стандартную библиотеку. Но я знаю и использую этот класс, который имеет дело с объектами html.
"HTMLEntities - это открытый Java-класс, содержащий набор статических методов (htmlentities, unhtmlentities,...) для преобразования специальных и расширенных символов в HTML-разрешения и наоборот.
http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=htmlentities
Ответ 7
Или вы можете использовать unescapeHtml4:
String miCadena="GUÍA TELEFÓNICA";
System.out.println(StringEscapeUtils.unescapeHtml4(miCadena));
Этот код печатает строку:
GUÍA TELEFÓNICA
Ответ 8
Как показано в @jem, можно использовать jsoup.
С jSoup 1.8.3 можно использовать метод Parser.unescapeEntities, который сохраняет исходный html.
import org.jsoup.parser.Parser;
...
String html = Parser.unescapeEntities(original_html, false);
Похоже, что в предыдущем выпуске этого метода нет.