经过多次尝试,我得到了这段代码。但不幸的是我无法删除节点。我的输入和输出XML完全相同。
private void removeEmptyChildElements(Document doc) throws TransformerFactoryConfigurationError, TransformerException {
NodeList nodeList = doc.getElementsByTagName("item");
for (int i=0; i<nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node.getAttributes().getNamedItem("text").getNodeValue().equals("PAL")) {
if (node.hasChildNodes()) {
node.getParentNode().removeChild(node);
}
} else if (node.getAttributes().getNamedItem("text").getNodeValue().equals("HAL")) {
if (node.hasChildNodes()) {
node.getParentNode().removeChild(node);
}
} else if (node.getAttributes().getNamedItem("text").getNodeValue().equals("fName")) {
if (node.hasChildNodes()) {
node.getParentNode().removeChild(node);
}
} else if (node.getAttributes().getNamedItem("text").getNodeValue().equals("LName")) {
if (node.hasChildNodes()) {
node.getParentNode().removeChild(node);
}
}
}
StringWriter sw = new StringWriter();
Transformer serializer = TransformerFactory.newInstance().newTransformer();
serializer.transform(new DOMSource(nodeList.item(0)), new StreamResult(sw));
String result = sw.toString();
System.out.println(result);
}
一开始我有62个节点,最后我期待最多51个节点。