您好我谷歌搜索了几个小时,无法找到答案......(或接近它的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也在文档的某处关闭,关闭我想保留在那里。
答案 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]")
答案 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.