У меня есть XML, как указано ниже. Я хочу рекурсивно удалить пустые теги из того же. Например, как только тег f удаляется, тег e должен быть удален, а когда тег e удаляется, тег d становится пустым и, следовательно, также должен быть удален.
<Test>
<a>test</a>
<b>test</b>
<c></c>
<d>
<e>
<f> </f>
</e>
</d>
</Test>
результат должен быть
<Test>
<a>test</a>
<b>test</b>
</Test>
Я могу удалить тег, но я не могу удалить тег, так как в нем есть пустое место. Хотя я могу идентифицировать это как тег, который нужно удалить, но когда я вызываю removeChild() для его родителя, он не удаляется из XML. В коде во время отладки он показывает количество дочерних элементов e после вызова removeChild() как ноль. Но все равно остается в xml??
Пожалуйста, помогите мне, что я делаю не так.
Пожалуйста, найдите ниже мой код, который я использую.
for (Element childElement : toRemove) {
Node parentNode = childElement.getParentNode();
System.out.println("Removing null or empty node :: " + childElement.getNodeName());
if(parentNode!=null){
NodeList childList = parentNode.getChildNodes();
System.out.println("List of Childer before deleting :: " + childList.getLength());
parentNode.removeChild(childElement);
clean(parentNode);
childList = parentNode.getChildNodes();
int childCount = childList.getLength();
for (int i = 0; i < childCount; i++) {
Node childNode = childList.item(i);
System.out.println("Childs :: " + childNode);
}
for (int i = 0; i < childCount; i++) {
Node childNode = childList.item(i);
if(childNode!=null){
System.out.println("Child before deleting :: " + childNode);
if (childNode instanceof Element == false){
if(childNode.getNodeValue().trim().isEmpty()){
System.out.println("found unwanted :: " + childNode.getNodeName());
parentNode.removeChild(childNode);
i--;
childCount--;
clean(parentNode);
}
}
}
}
childList = parentNode.getChildNodes();
System.out.println("List of Childer after deleting :: " + childList.getLength());
}
}