有谁能告诉我一些关于过滤html为文本/字符串的建议吗?我尝试过调用Document的text()。但是所有标签/元素都会被过滤掉。我的目标是过滤一些指定的标签。
例如:我有这样的html文本:
<div>hello<p>world</div>,<table><tr><td>xxx</td></tr>要获得结果:
<div>hello<p>world</div>,xxx 它有过滤过的标签。
发布于 2013-07-08 03:15:55
我现在不能对此进行测试,但我认为您应该编写一个递归函数来遍历树并根据条件打印每个节点。以下是它可能看起来是什么样子的示例,但我希望您必须对其进行修改,以更精确地满足您的需求。
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);
}发布于 2018-05-18 03:25:22
您可以使用Whitelist来实现此目标。例如:
Whitelist whiteList = new Whitelist();
whiteList.addTags("div", "p", "td");
这意味着所有其他标签都将被删除。
https://stackoverflow.com/questions/17492396
复制相似问题