假设我有一个像这样的html片段:
<p> <span> foo </span> <em> bar <a> foobar </a> baz </em> </p>
我想从中得到的是:
foo bar foobar baz
所以我的问题是:如何从html中去掉所有包装标签,只得到与html中相同顺序的文本?正如您在标题中看到的,我想使用jsoup进行解析。
重音html示例(请注意“á”字符):
<p><strong>Tarthatatlan biztonsági viszonyok</strong></p>
<p><strong>Tarthatatlan biztonsági viszonyok</strong></p>
我想要的是:
Tarthatatlan biztonsági viszonyok
Tarthatatlan biztonsági viszonyok
这个html不是静态的,一般来说,我只是想解码人类可读形式的通用html片段的每一个文本,宽度线中断。
实际上,使用Jsoup清理的正确方法是通过白名单
...
final String html = "<p> <span> foo </span> <em> bar <a> foobar </a> baz </em> </p>";
Document doc = Jsoup.parse(html);
Whitelist wl = Whitelist.none()
String cleanText = Jsoup.clean(doc.html(), wl)
如果你还想保留一些标签:
Whitelist wl = new Whitelist().relaxed().removeTags("a")
使用Regex:-
String str = "<p> <span> foo </span> <em> bar <a> foobar </a> baz </em> </p>";
str = str.replaceAll("<[^>]*>", "");
System.out.println(str);
输出:-
foo bar foobar baz
使用JSoup:-
Document doc = Jsoup.parse(str);
String text = doc.text();
使用Jsoup:
final String html = "<p> <span> foo </span> <em> bar <a> foobar </a> baz </em> </p>";
Document doc = Jsoup.parse(html);
System.out.println(doc.text());
输出:
foo bar foobar baz
如果您只需要p-tag的文本,请使用该文本而不是doc。text()
:
doc.select("p").text();
...或者只有身体:
doc.body().text();
final String html = "<p><strong>Tarthatatlan biztonsági viszonyok</strong></p>"
+ "<p><strong>Tarthatatlan biztonsági viszonyok</strong></p>";
Document doc = Jsoup.parse(html);
for( Element element : doc.select("p") )
{
System.out.println(element.text());
// eg. you can use a StringBuilder and append lines here ...
}
输出:
Tarthatatlan biztonsági viszonyok
Tarthatatlan biztonsági viszonyok
我正在尝试使用 Jsoup 删除 HTML 页面标记之间的所有文本 例如,如果输入HTML是 输出应该是 基本上,我想删除返回的内容。 我找到了很多相反的帖子,只保留文本,但没有解决我的问题。知道怎么做吗? 编辑 maverick9999:https://stackoverflow.com/a/24292349/3589481提出的解决方案将解决大部分情况。 然而,正如评论中提到的,这个解决方案也
问题内容: 假设我有一个这样的html片段: 我想从中提取的是: 所以我的问题是:如何从html中剥离所有包装标签,并仅以与html中相同的顺序获取文本?正如您在标题中看到的那样,我想使用jsoup进行解析。 重音html的示例(注意’á’字符): 我想要的是: 这个html并不是静态的,通常我只希望通用html片段的每个文本都以已解码的人类可读形式显示,宽度换行。 问题答案: 使用Jsoup:
问题内容: 我正在尝试使用Jsoup删除HTML页面的标签之间的所有文本 例如,如果输入的HTML是 输出应为 基本上,我想删除由返回的内容 我发现有很多帖子是相反的,只保留文本,而没有什么可以解决我的问题。有关如何执行此操作的任何想法? 编辑 maverick9999提出的解决方案将解决大多数情况。 但是,正如注释中所注意到的,此解决方案还将删除嵌套标签。 举个例子: 将在输出中删除一个div:
我想清除所有筛选规则,但保留筛选本身。 有没有直接快速的方法去做呢? 我找到的代码是: 它获取筛选器对象,我对筛选器#的选项数量是有限的。 注意:删除此筛选器,但我需要保留它。
问题内容: 问题是这样的:我有一个像这样的XML片段: 为了得到结果,我想删除所有-和-Tags,但保留它们的(文本)内容和子节点不变。另外,-Element应该保持不变。结果应该这样 目前,我将回到一个非常肮脏的把戏:我将etree.tostring这个片段,通过正则表达式删除有问题的标签,并用etree.fromstring结果替换原始片段(不是真正的代码,但是应该这样): 我知道我可能可以使
这似乎是一个简单的解决方案,但我一辈子都无法解决。 我有一个由< code >混合组成的元素集合 我想做的就是保留所有东西(包括标签和它的字符串),这是一个干净的