Да, вы используете библиотеку jSoup неправильно.Пройдемся строка за строкой:
Вы сохраняете ссылку на первого ребенка:
Element div = body.select("div").first();
Вы являетесьудаление всех дочерних узлов элемента:
body.empty();
И затем вы пытаетесь добавить удаленный дочерний узел:
body.appendChild(div);
Теперь проблема в последнем шаге, потому что, когда вы удалили все дочерние элементы, тогда в это время отношения родитель-потомок не разрываются, потому что body.empty();
просто вызывает метод clear();
java.util.List
ион не нарушает никакой связи родитель-потомок, что не так, когда вы делаете body.children().remove()
, и поэтому в следующем коде вы получаете упомянутое исключение, так как есть свисающая ссылка на дочерний узел:
protected void removeChild(Node out) {
Validate.isTrue(out.parentNode == this);
int index = out.siblingIndex();
childNodes.remove(index); // problem comes here
reindexChildren();
out.parentNode = null;
}
Но , если вы сделаете что-то подобное, это будет работать:
Element div_child = doc.createElement("div");
body.appendChild(div_child);