JSOUP仅删除结束和/或打开div

时间:2015-10-28 18:30:26

标签: java html parsing dom jsoup

您好我谷歌搜索了几个小时,无法找到答案......(或接近它的smt) 我想要做的是,让我说我有这个代码(非常简化):

<div id="one"><div id="two"><div id="three"></div></div></div>

我想要做的是删除这些元素的具体数量,让我们说两个。结果将是:

<div id="one"><div id="two"><div id="three"></div>

或者我想删除这些开放元素(再次特定数量,再说2)但不知道他们的全名(所以我们可以假设真实姓名是id =&#34; one_54486464&#34;我知道它的一个......) 所以在删除后我得到了这个结果:

<div id="three"></div></div></div>

有人可以建议实现这一结果吗?它不必包括JSOUP,更好。欢迎更简单或更有效的方式:)(但我使用JSOUP来解析文档以达到我留下的地步) 如果您有任何问题,我希望我能清楚地解释一下,请问...谢谢:)。

编辑:我要删除的那些元素位于HTML文档的最后(所以没有,没有任何东西在它们后面没有body标签html标签什么都没有......) 请保持HTML文档在整个代码中有很多,我想在文档的末尾仅删除特定的数量...

对于开场div,THOSE在我的HTML文档的最开头,没有任何东西在他们面前...所以我需要从头开始删除特定的金额,而不知道他们的特定ID只是开始。此div也在文档的某处关闭,关闭我想保留在那里。

2 个答案:

答案 0 :(得分:1)

对于第一种情况,您可以获取元素的html(使用html()方法)并在其上使用一些String方法删除其几个结束标记。

示例:

e.html().replaceAll("(((\\s|\n)+)?<\\/div>){2}$","");

这将删除最后2个结束div代码,以更改要删除的代码数量,只需更改大括号{n}

之间的数字

(这只是一个例子而且可能不可靠,您应该使用其他一些String方法来决定丢弃哪些部分)

对于第二种情况,您可以选择内部元素并为其添加一些额外的结束标记。

示例:

String s = e.select("#two").first().html() + "</div></div>";

要选择ID以某些String开头的元素,您可以使用此e.select("div[id^=two]")

您可以在how to select elements here

上找到更多详情

答案 1 :(得分:0)

After Titus suggested regular expressions I decided to write regex for deleting opening divs too. So I convert Jsoup Document to String then did the parsing on a string and then convert back to Jsoup Document so I can use Jsoup functions.

ADD: What I was doing is that I was parsing and connecting two pages to one seamless. So there was no missing opening div or closing... so my HTML code stay with no errors therefore I was able to convert it back to Jsoup Document without complications.