从HtmlCleaner获取文本中的清理HTML

时间:2011-08-25 19:03:52

标签: html-parsing htmlcleaner

我想看看我们从HTMLCleaner获得的已清理HTML。 我看到在TagNode上有一个名为serialize的方法,但是不知道如何使用它。 有人有任何示例代码吗?

由于 Nayn

3 个答案:

答案 0 :(得分:7)

以下是示例代码:

HtmlCleaner htmlCleaner = new HtmlCleaner();

TagNode root = htmlCleaner.clean(url);

HtmlCleaner.getInnerHtml(root);

String html = "<" + root.getName() + ">" + htmlCleaner.getInnerHtml(root) + "</" + root.getName() + ">";

答案 1 :(得分:6)

使用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);

答案 2 :(得分:0)

XmlSerializer xmlSerializer = new PrettyXmlSerializer(cleanerProperties);

String html = xmlSerializer.getAsString(rootTagNode);

上面的方法有问题,它会修剪html标签中的内容,例如

  

这是第1段。

 will become 
  

这是第1段。

并且getSingleLineOfChildren函数执行修剪操作。因此,如果我们从网站获取数据并希望保持格式像tuckunder。

PS:如果html标签有子标签,则不会对父标签contetn进行操作,

例如<p> this is paragraph1. <a>www.xxxxx.com</a> </p>将在“this is paragraph1”之前保留空格