Я использую следующий код для удаления нескольких элементов из файла XMl.removeChild() метод break for loop
NodeList removeNodeList = doc.getElementsByTagName("server1");
Element rootElement = doc.getDocumentElement();
for (int i = 0; i < removeNodeList.getLength(); i++) {
rootElement.removeChild(removeNodeList.item(i));
}
Но после удаления одного элемента он выходит из цикла. В чем проблема.
Ниже приведено содержимое моего XML-файла.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<start>
<category name="server1"/>
<category name="server2"/>
<server1 name="serverName1" value="serverValue"/>
<server1 name="serverName1" value="serverValue"/>
<server2 name="serverName2" value="serverValue"/>
</start>
Я бы предположил, что 'NodeList' является динамическим и удаляет элемент, обновляющий (уменьшает) длину, в результате чего ваше условие цикла проверяется только на true в первый раз. Это в первую очередь основано на том, как они работают в JavaScript, хотя у меня нет опыта работы с XML-документами на Java. –
Вы проверили несколько вещей вроде - length of removeNodeList. И каково содержимое xml после выполнения цикла for, удаляется ли только один элемент? – csn
@csn Спасибо за ответ, я проверил размер 'NodeList', его 2 до этого он уменьшил до 1. – Vishrant