Заменить данные в XML-файле в Java - PullRequest
1 голос
/ 22 марта 2012

я пытаюсь заменить

<photo>dummy.jpg</photo>

с этим

<photo>NewImage_2012-03-22:15.00.00.jpg</photo>

код выглядит так

Element nameElement = (Element) fstNode;
NodeList nameElemList = nameElement.getElementsByTagName("photo");
Element firstElement = (Element) nameElemList.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("Data : " + 
  firstElement.getChildNodes().item(0).getNodeValue());

в выводе печатает имя новой фотографии, но не заменяет данные в файле xml. Чего мне не хватает?

Спасибо.

1 Ответ

0 голосов
/ 26 марта 2012

используйте 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);
                    }
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...