Получение очищенного HTML в тексте от HtmlCleaner - PullRequest
7 голосов
/ 25 августа 2011

Я хочу увидеть очищенный HTML, который мы получаем от HTMLCleaner.Я вижу, что есть метод с именем serialize на TagNode, однако я не знаю, как его использовать.У кого-нибудь есть пример кода для этого?

Спасибо, Найн

Ответы [ 3 ]

7 голосов
/ 29 июля 2012

Вот пример кода:

HtmlCleaner htmlCleaner = new HtmlCleaner();

TagNode root = htmlCleaner.clean(url);

HtmlCleaner.getInnerHtml(root);

String html = "<" + root.getName() + ">" + htmlCleaner.getInnerHtml(root) + "</" + root.getName() + ">";
6 голосов
/ 06 мая 2013

Используйте подкласс org.htmlcleaner.XmlSerializer, например:

// get the element you want to serialize
HtmlCleaner cleaner     = new HtmlCleaner();
TagNode     rootTagNode = cleaner.clean(url);

// set up properties for the serializer (optional, see online docs)
CleanerProperties cleanerProperties = cleaner.getProperties();
cleanerProperties.setOmitXmlDeclaration(true);

// use the getAsString method on an XmlSerializer class
XmlSerializer xmlSerializer = new PrettyXmlSerializer(cleanerProperties);
String        html          = xmlSerializer.getAsString(rootTagNode);
0 голосов
/ 13 февраля 2018
XmlSerializer xmlSerializer = new PrettyXmlSerializer(cleanerProperties);

String html = xmlSerializer.getAsString(rootTagNode);

метод, описанный выше, имеет проблему, он обрезает содержимое в html-метке, например,

это пункт1.

 will become 

это параграф 1.

и это функция getSingleLineOfChildren выполняет операцию обрезки.Поэтому, если мы выбираем данные с веб-сайта и хотим сохранить формат, подобный tuckunder.

PS: если метка html имеет метку дочерних элементов, родительская метка contexttn не будет обрезана, например,

1018 * сохранит пробел до "this is para1"

...