Вставка элемента в документ с помощью 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>

2 ответов


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

    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. перед этим ребенком вставьте этот элемент

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

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