JSoup Удалить элементы

Хотя это может показаться слишком простым, я хотел бы спросить, как удалить элемент из документа с помощью Jsoup.

Я пытался найти его, но безуспешно.

Вот проблема:

Elements myNewElements = doc.getElementsByAttribute("hello");

//Now I need to perform some other methods on myNewElements before removing.
//Hence..suggested method says,
doc.getElementsByAttribute("hello").remove();

Это прекрасно работает. Но я считаю, что выбор одних и тех же элементов снова и снова может потребовать памяти. Является ли это возможным ?

doc.select(myNewElements).remove();

// Попытаться выбрать myNewElements из doc.


person akshayb    schedule 08.05.2013    source источник
comment
Метод select() не принимает Elements в качестве аргумента — он принимает строки! jsoup.org/apidocs/org/ jsoup/узлы/   -  person ollo    schedule 09.05.2013
comment
да, я упомянул в вопросе.   -  person akshayb    schedule 09.05.2013


Ответы (2)


Если вы не добавили никаких новых элементов, соответствующих вашему первоначальному выбору, вам не нужно снова выбирать элементы.

Каждый элемент в elements имеет ссылку на своего родителя, и метод remove() просто говорит родителю удалить этот дочерний элемент.

По сути, просто делаю:

myNewElements.remove()

должно сработать.

person Francisco Paulo    schedule 08.05.2013
comment
Публикация этих исключений была бы полезна. Даже если это работает, исключения — хороший намек на то, что что-то не так. - person ollo; 09.05.2013

Лучше перебрать элементы и удалить их внутри:

for( Element element : doc.select(myNewElements) )
{
    element.remove();
}

Есть аналогичный вопрос: Проанализируйте html с помощью jsoup и удалите блок тегов

person Community    schedule 08.05.2013
comment
как, если myNewElements.get(0).remove() ? может ли это быть? - person yozawiratama; 02.10.2014
comment
Это не требуется и добавляет дополнительную обработку. Удаление корневого элемента, который вы хотите удалить, также удаляет все дочерние элементы. - person Patrick W. McMahon; 30.11.2015