0

Here is my XML file.

<config> <properties> 
<entry key="delivaryDate">15-FEBRUARY-2013</entry> 
<entry key="externalCOID">123456</entry> 
<entry key="inputFileName">Generic_ChipONLY.chp</entry> 
<entry key="recordTotal">2</entry> 
<entry key="dueDate">15-MARCH-2013</entry>
</properties> </config>

For example, I want to change the record inside "recordTotal" from 2 to 10, how can I do that? Now I only know get by using getElementsByTagName("entry").

DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse(new File("customer.xml"));
NodeList entry = doc.getElementsByTagName("entry");
king jia
  • 692
  • 8
  • 20
  • 43
  • See this http://stackoverflow.com/questions/8583080/setting-node-value-using-xpath-java , the xpath which you can use is xpath = "/config/properties/entry[@key = 'recordTotal']"; – Abi Apr 24 '13 at 02:57
  • Hmm...Can show me the step? I cant do it – king jia Apr 24 '13 at 04:43

1 Answers1

0
 String xmlFile = "customer.xml";

            DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
            Document doc = docBuilder.parse(xmlFile);

            //Retrieve the third entry node
            Node entryNode = doc.getElementsByTagName("entry").item(3);

            //Set new value
            entryNode.setTextContent("10");

            //Save to file
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource source = new DOMSource(doc);
            StreamResult result = new StreamResult(new File(xmlFile));
            transformer.transform(source, result);
Abi
  • 1,335
  • 2
  • 15
  • 28