Вставка элемента в документ с помощью Jsoup

Здравствуйте, я пытаюсь вставить новый дочерний элемент в корневой элемент документа следующим образом:

    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.select("root").first().children().first().before("<newChild></newChild>");
    System.out.println(doc.body().html());

Вывод:

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

Чтобы расшифровать, в нем говорится:

  • Выберите корневые элементы
  • Возьмите первый корневой элемент
  • Возьмите дочерние элементы этого корневого элемента
  • Перенесите первого ребенка
  • До этого ребенка вставьте этот элемент

Ответ 2

Очень похоже, используйте prependElement() вместо appendElement():

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