在Java中替换XML文件中的数据

在Java中替换XML文件中的数据,java,xml,dom,Java,Xml,Dom,我想换一个 dummy.jpg 用这个 NewImage_2012-03-22:15.00.00.jpg 代码如下所示 元素名称元素=(元素)fstNode; NodeList namelemlist=namelement.getElementsByTagName(“照片”); Element firstElement=(Element)namelemlist.item(0); NodeList fstNm=firstElement.getChildNodes(); Text newData

我想换一个

dummy.jpg
用这个

NewImage_2012-03-22:15.00.00.jpg
代码如下所示

元素名称元素=(元素)fstNode;
NodeList namelemlist=namelement.getElementsByTagName(“照片”);
Element firstElement=(Element)namelemlist.item(0);
NodeList fstNm=firstElement.getChildNodes();
Text newData=doc.createTextNode(“NewImage_2012-03-22:15.00.00.jpg”);
firstElement.replaceChild(newData,fstNm.item(0));
System.out.println(“数据:”+
firstElement.getChildNodes().item(0.getNodeValue());
在输出中,它打印新的照片名称,但不替换xml文件中的数据。我错过了什么


谢谢。

使用DocumentTraversal、NodeIterator替换字符串

 DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
                DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
                Document doc = docBuilder.parse("/home/riddhish/developerworkspace/SplitString/src/com/updatexmlwithjava/file.xml");           
                DocumentTraversal traversal = (DocumentTraversal) doc;
                Node a = doc.getDocumentElement();
                System.out.println("Chield node length ="+a.getChildNodes().getLength());
                NodeIterator iterator = traversal.createNodeIterator(a, NodeFilter.SHOW_ELEMENT, null, true);
                Element b = null;
                for (Node n = iterator.nextNode(); n != null; n = iterator.nextNode()) {
                    Element e = (Element) n;                
                    if ("parent tag".equals(e.getTagName())) {
                        System.out.println(""+e.getTagName() +" "+ e.getTextContent());
                        b = e;
                    } else if ("photo".equals(e.getTagName()) && "dummy.jpg".equals(e.getTextContent()) && b != null) {
                        e.setTextContent("NewImage_2012-03-22:15.00.00.jpg");
                        //a.removeChild(b);
                    }
                }

您必须将数据存储回文件,类似于加载数据的方式。。。在这里找到一些信息:如果这是一个选项,我建议使用JAXB。无论如何,对我来说,使用JAXB似乎使创建、操作和保存XML变得更加容易。。