任何 jsoup 大师都可以告诉我一些将 html 过滤为文本/字符串的建议吗?我试过调用 Document 的 text() 。但是所有标签/元素都将被过滤。我的目标是过滤一些指定的标签。
即:我有像这样的html文本:
<div>hello<p>world</div>,<table><tr><td>xxx</td></tr>
得到结果:
<div>hello<p>world</div>,xxx
其中有过滤标签。
我现在无法对此进行测试,但我认为您想编写一个递归函数,逐步遍历树并根据条件打印每个节点。以下是它的外观示例,但我希望您必须对其进行修改以更准确地满足您的需求。
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);
}
你可以用它Whitelist
来实现这个目标。例如:
Whitelist whiteList = new Whitelist();
whiteList.addTags("div", "p", "td");
这意味着将删除所有其他标签。