使用 Jsoup 在文档中插入元素

2022-09-03 05:31:06

您好,我正在尝试在文档根元素中插入新的子元素,如下所示:

    Document doc = Jsoup.parse(doc);
    Elements els = doc.getElementsByTag("root");
    for (Element el : els) {
        Element j = el.appendElement("child");
    }

在上面的代码中,文档中只有一个根标记,因此基本上循环只会运行一次。

无论如何,该元素将作为根元素“root”的最后一个元素插入。

有没有办法插入子元素作为第一个元素?

例:

<root>
 <!-- New Element must be inserted here -->
 <child></child>
 <child></chidl> 
 <!-- But it is inserted here at the bottom insted  -->
</root>

答案 1

看看这是否对您有所帮助:

    String html = "<root><child></child><child></chidl></root>";
    Document doc = Jsoup.parse(html);
    doc.selectFirst("root").child(0).before("<newChild></newChild>");
    System.out.println(doc.body().html());

输出:

<root>
 <newchild></newchild>
 <child></child>
 <child></child>
</root>

为了破译,它说:

  1. 选择第一个根元素
  2. 抓住该根元素上的第一个子元素
  3. 在该子级之前插入此元素

可以使用方法中的任何索引来选择任何子项child

例:

    String html = "<root><child></child><child></chidl></root>";
    Document doc = Jsoup.parse(html);
    doc.selectFirst("root").child(1).before("<newChild></newChild>");
    System.out.println(doc.body().html());

输出:

<root>
 <child></child>
 <newchild></newchild>
 <child></child>
</root>

答案 2

非常相似,使用prependElement()而不是endendElement():

Document doc = Jsoup.parse(doc);
Elements els = doc.getElementsByTag("root");
for (Element el : els) {
    Element j = el.prependElement("child");
}

推荐