你問爲什麼
elements.get(1).remove();
// remove doesn't affect elements. why?
答案可以在實施中找到這不起作用。 您在元素上調用的方法是在 類Node
類中實現的一種方法。
public void remove() {
Validate.notNull(this.parentNode);
this.parentNode.removeChild(this);
}
正如你看到的調用remove()
刪除從父 這個元素(如果你打印文檔,你會看到該元素b
一直 刪除。但是,這並不意味着已經從刪除該類Elements
持有 元素的列表。
public class Elements implements List<Element>, Cloneable {
private List<Element> contents;
爲了做到這一點,你必須做的方式@Silviu Burcea表明你, 通過調用方法remove(int index)
你調用下面的方法 可在Elements
類
public Element remove(int index) {
return ((Element) this.contents.remove(index));
}
雖然心中裸地發現實現,如果你這樣做,你唯一要做的,就是 除去第i個元素來自Elements
類包含的列表。
檢查這些例子
實施例1:元件的尺寸減小,但該文檔仍然是相同的
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
public class Main {
public static void main(String[] args) throws Exception {
String baseHtml = "<div>a</div>" +
"<div>b</div>" +
"<div>c</div>";
Document doc = Jsoup.parse(baseHtml);
Elements elements = doc.select("div");
elements.remove(1);
System.out.println(doc.outerHtml());
System.out.println("-----------------------------------");
System.out.println(elements.size());
System.out.println("-----------------------------------");
System.out.println(doc.outerHtml());
}
}
實施例2:元素保持不變,但該文檔變化
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
public class Main {
public static void main(String[] args) throws Exception {
String baseHtml = "<div>a</div>" +
"<div>b</div>" +
"<div>c</div>";
Document doc = Jsoup.parse(baseHtml);
Elements elements = doc.select("div");
elements.get(1).remove();
System.out.println(doc.outerHtml());
System.out.println("-----------------------------------");
System.out.println(elements.size());
System.out.println("-----------------------------------");
System.out.println(doc.outerHtml());
}
}
我希望這有助於澄清confu錫永。
下面的答案有幫助嗎?如果是,請接受一個,所以這個話題可以被視爲封閉。如果沒有,請讓社區知道,以便我們可以提供進一步的幫助。 – alkis