使用java删除XML中的重复项的小问题

这是示例XML:

         23 23             

这是我写的java代码,它找到重复的元素(包括它们的属性)并删除它们:

  import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpression; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class RecursiveNodeCheck { /** * @param args */ public static String parent; public static void main(String[] args) { // TODO Auto-generated method stub String path="D:/vodafone/parse.xml"; try { File file = new File(path); DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance() .newDocumentBuilder(); Document doc = dBuilder.parse(file); System.out.println("Root element :" + doc.getDocumentElement().getNodeName()); parent=doc.getDocumentElement().getNodeName(); String name="//"+parent+"/*"; XPathExpression expr = XPathFactory.newInstance().newXPath() .compile(name); NodeList list = (NodeList) expr.evaluate(doc, XPathConstants.NODESET); recursive(doc,list,path); } catch (Exception e) { System.out.println(e.getMessage()); } } private static void recursive(Document doc,NodeList list,String path) throws XPathExpressionException, TransformerException, SAXException, ParserConfigurationException, IOException { // TODO Auto-generated method stub for (int count = 0; count 0; i--) { System.out.println("."); //progress indicator if (nodes.item(i).getNodeType() == Node.TEXT_NODE ){ nodes.item(i).getParentNode().removeChild( nodes.item(i)); } else{ Element el = (Element) ( nodes.item(i)); el.getParentNode().removeChild(el); } } TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File(path)); transformer.transform(source, result); // TODO Auto-generated method stub } } } 

这是我得到的输出:

        23 ****           

在上面的输出xml中, 标记仍然存在。 我该如何删除?

更改XPATH表达式: exp= "//"+head.getNodeName()+"/"+current.getNodeName()+"[text()='"+current.getTextContent()+"']";

这个给出了正确的输出。