2

任何 jsoup 大师都可以告诉我一些将 html 过滤为文本/字符串的建议吗?我试过调用 Document 的 text() 。但是所有标签/元素都将被过滤。我的目标是过滤一些指定的标签。

即:我有像这样的html文本:

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

得到结果:

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

其中有过滤标签。

4

2 回答 2

1

我现在无法对此进行测试,但我认为您想编写一个递归函数,逐步遍历树并根据条件打印每个节点。以下是它的外观示例,但我希望您必须对其进行修改以更准确地满足您的需求。

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);
}
于 2013-07-07T19:15:54.530 回答
0

你可以用它Whitelist来实现这个目标。例如:

Whitelist whiteList = new Whitelist();
whiteList.addTags("div", "p", "td");

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

于 2018-05-17T19:25:21.500 回答