当前位置: 首页 > 知识库问答 >
问题:

如何从一组元素中删除一个元素?

万承志
2023-03-14

给定下面的代码

HTML:

<div>a</div>
<div>b</div>
<div>c</div>

断续器

Document doc = Jsoup.parse(baseHtml);
Elements elements = doc.select("div");
elements.get(1).remove();
// remove doesn't affect elements. why?
elements.size();   // equal 3
// but this works
doc.outerHtml() // <div>a</div><div>c</div>

我必须使用此代码才能删除元素吗?它似乎太冗长了。

Document doc = Jsoup.parse(baseHtml);
Elements elements = doc.select("div");
elements.get(1).remove();
elements = doc.select("div");

共有2个答案

祁雪峰
2023-03-14

你问为什么这不起作用

elements.get(1).remove();
// remove doesn't affect elements. why?

答案可以在实现中找到。您在元素上调用的方法是在< code>Node类中实现的方法。

public void remove() {
    Validate.notNull(this.parentNode);
    this.parentNode.removeChild(this);
}

正如您所看到的,调用ade()从父级中删除了此元素(如果您打印文档,您将看到元素b已被删除。但这并不意味着它已从类Elements持有的元素列表中删除。

public class Elements implements List<Element>, Cloneable {
    private List<Element> contents; 

为了做到这一点,你必须按照Burcea向您展示@Silviu的方式去做,通过调用方法 remove(int index),你正在调用下面的方法,该方法可以在 Elements 类中找到实现。

public Element remove(int index) {
    return ((Element) this.contents.remove(index));
}

尽管在心里很清楚,但如果这样做,唯一要做的就是从<code>Elements</code>类包含的列表中删除第i个元素。

看看这些例子

示例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()); 
    }
}

我希望这有助于澄清困惑。

王高超
2023-03-14

这应该可以帮助您:

public class TestJsoup {

    public static void main(String[] args) {
        try {
            Document doc = Jsoup.connect("http://www.google.ro").get();
            Elements select = doc.select("div");
            System.out.println(select.size());
            select.remove(1);
            System.out.println(select.size());
        } catch (IOException ex) {
            Logger.getLogger(TestJsoup.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
 类似资料:
  • 问题内容: 说我有这些二维数组A和B。 如何从B中删除A中的元素。(集合论中的补语:AB) 更准确地说,我想做这样的事情。 问题答案: 基于this solution对,这里是用更少的内存占用与NumPy基础的解决方案,并与大型阵列工作时,可能是有益的- 样品运行- 在大型阵列上的运行时测试- 具有基础解决方案的时间- 基于更少内存占用量的定时解决方案- 进一步提升性能 通过将每一行视为索引元组来

  • 如何从另一个数组中删除数组的元素?我有第一个数组[“a”“b”“c”]。以及第二阵列[“a”、“e”]、[“e”、“b”、“c”]、[“a”、“c”]。 如何从第二个数组中删除第一个数组的元素? 结果,得到[["e"],["e"], []].

  • 问题内容: 我有一个数组例如: 谁能告诉我如何从数组中删除一个元素。例如,我要删除项目“ b”,以使数组如下所示: 我找不到解决办法。到目前为止,我在这里发现的内容不适用于我:( 问题答案: 您不能从数组中删除元素。Java数组的大小是在分配数组时确定的,不能更改。您能做的最好的事情是: 在相关位置分配给数组;例如 这给您带来了处理值所在数组中的“孔”的问题。(在某些情况下,这不是问题……但是在大

  • 我有一个二维数组,其中最后的元素是空的。这样地: 现在我想删除空元素,并获得正确的新大小。长度 我试着这样做,但不起作用: 有什么好办法吗?

  • 我需要按id从arr1中移除arr2中的所有元素 结果

  • 我的变量如下所示: 我需要的是删除列表中的最后一个!我尝试检查文档,在上使用了函数,但不起作用。有什么想法或线索吗?谢谢!