Saya memiliki XML seperti yang diberikan di bawah ini. Saya ingin menghapus tag kosong secara rekursif dari tag yang sama. Seperti halnya, setelah tag f dihapus, tag e harus dihapus dan ketika tag e dihapus, tag d kosong dan karenanya juga harus dihapus.
<Test>
<a>test</a>
<b>test</b>
<c></c>
<d>
<e>
<f> </f>
</e>
</d>
</Test>
hasilnya seharusnya
<Test>
<a>test</a>
<b>test</b>
</Test>
Saya dapat menghapus tag tetapi saya tidak dapat menghapus tag karena ada ruang kosong. Meskipun saya dapat mengidentifikasi ini sebagai tag yang akan dihapus tetapi ketika saya memanggil deleteChild() pada induknya, tag tersebut tidak dihapus dari XML. Dalam kode saat melakukan debug, ini menunjukkan jumlah anak e setelah memanggil deleteChild() sebagai nol. Tapi masih tetap di xml??
Tolong bisakah Anda membantu saya apa yang saya lakukan salah.
Silakan temukan di bawah kode saya yang saya gunakan.
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());
}
}