Jsoup只过滤掉一些从html到文本的标签

时间:2013-07-05 15:31:27

标签: html jsoup java

任何jsoup大师都能告诉我一些过滤html到text / string的建议吗?我试过调用Document的text()。但是所有标签/元素都将被过滤掉。我的目标是过滤一些指定的标签。

即:我的html文字如下:

<div>hello<p>world</div>,<table><tr><td>xxx</td></tr>

获得结果:

<div>hello<p>world</div>,xxx 

已过滤标签。

2 个答案:

答案 0 :(得分:0)

我现在无法对此进行测试,但我认为您希望编写一个递归函数,该函数遍历树并根据条件打印每个节点。以下是它可能会是什么样子的示例,但我希望您必须更精确地修改它以满足您的需求。

Document doc = JSoup.parse(page_text);
recursive_print(doc.head());
recursive_print(doc.body());

...

private static Set<String> ignore = new HashSet<String>(){{
  add("table");
  ...
}};
public static void recursive_print(Element el){
   if(!ignore.contains(el.className()))
     System.out.println(el.html());
   for(Element child : el.children())
     recursive_print(child);
}

答案 1 :(得分:0)

您可以使用Whitelist whiteList = new Whitelist();
whiteList.addTags("div", "p", "td");
来实现此目标。例如:

HtmlElement element= WebBrowser.Document.GetElementById("MainRadGrid_ClientState");

这意味着将删除所有其他标签。