删除HTML实体及其内容

时间:2013-08-06 16:27:08

标签: java android html jsoup

我使用Document doc =jsoup.connect(someUrl).get()Elements body=doc.select("div.chapter")

提取了一小段html
String myHtml = "
<div class="chapter">
  <h1>Hello this is my example</h1>
  <p>This is paragraph one</p>
  <p>This is paragraph two <sup class="num">Nuisance 1</sup><span class="notes">Nuisance 2</span></p>
  <p>This is paragraph three</p>
</div>"

我想用JSOUP删除<sup> </sup><span> <\span>他们的内容。我已经读过使用正则表达式语法是一个坏主意。大多数示例和答案都解决了这个问题,以删除标记并保留内容。我想得到的是:

String newHtml = "
<div class="chapter">
  <h1>Hello this is my example</h1>
  <p>This is paragraph one</p>
  <p>This is paragraph two</p>
  <p>This is paragraph three</p>
</div>"

我使用的JSOUP没有令人满意的结果(它保留了SUP和SPAN实体/标签。)。

3 个答案:

答案 0 :(得分:1)

可能在remove sup元素之后使用select

doc.select("div > sup").remove();

在那里,我使用了一个儿童组合器,它适用于您的具体示例。如果它们位于div的子元素中,则必须调整选择器。

答案 1 :(得分:1)

body.select("p > sup.num, p > span.notes").remove();
System.out.println(body.html());
在你的情况下,

应该是完美的。

答案 2 :(得分:1)

在阅读了更多内容(更多信息!)并尝试不同的选项后,我已根据自己的情况调整了解决方案:

doc.getElementsByClass("notes").remove();
doc.getElementsByClass("num").remove(); 
Elements newElement = doc.select("div.chapter");
String newHtml=newElement.toString();