【发布时间】:2015-02-04 19:12:04
【问题描述】:
我将从头开始,有这样的模式的html:
<div id="post_message_(some numeric id)">
<div style="some style things">
<div class="smallfont" style="some style">useless text</div>
<table cellpading="6" cellspaceing=.......> a lot of text inside i dont need</table>
</div>
Text i need
</div>
那些带有样式的 div 和那个表格是可选的,有时只有
<div id="post">
Text i need
</div>
我想将该文本解析为字符串。这是我正在使用的代码
Elements divsInside = element.getElementById("post_message_" + id).getElementsByTag("div");
for(Element div : divsInside) {
if(div != null && div.attr("style").equals("margin:20px; margin-top:5px; ")) {
System.out.println(div.html());
div.remove();
System.out.println("div removed");
}
}
我添加了这些打印行以检查它是否找到它们,是的,它确实找到了正确的,但后来当我将其解析为字符串时:
String message = Jsoup.parse(divsInside.html().replaceAll("(?i)<br[^>]*>", "br2n")).text()
.replaceAll("br2n", "\n");
由于某些原因,字符串再次包含所有已删除的内容。
我尝试通过迭代器删除它们,或者通过索引填充和删除元素,但结果是一样的。
【问题讨论】: