Вставка элемента в документ с помощью Jsoup - PullRequest
10 голосов
/ 30 марта 2012

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

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

В приведенном выше коде только один корневой тег находится в документе, поэтому, по сути, цикл будет выполнятьсяодин раз.

В любом случае, элемент вставляется как последний элемент корневого элемента «корень».

Есть ли способ вставить дочерний элемент в качестве первого элемента?

Пример:

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

Ответы [ 2 ]

14 голосов
/ 30 марта 2012

Посмотрите, поможет ли это вам:

    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>

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

  1. Выберите корневые элементы
  2. Захватить первый корневой элемент
  3. Захватить дочерние элементы этого корневого элемента
  4. Захватить первый дочерний элемент
  5. Перед тем, как этот дочерний элемент вставить этот элемент
5 голосов
/ 06 мая 2014

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

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