PDA

Click to See Complete Forum and Search --> : Write an element to XML file


eranga262154
Apr 21st, 2008, 01:53 AM
Hi all,

I have a xml file, the structure as follows.


<?xml version="1.0"?>

<data>
<key>467</key>
<name>eranga262154</name>
</data>


I want to write extra tag as follows

<?xml version="1.0"?>

<data>
<key>467</key>
<name>eranga262154</name>
<id>123</id>
</data>


How can I do that. I'll try something like this, but it's not update my xml file.


DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();

Document doc = docBuilder.parse (new File("records.xml"));

// Try to add an additional node
Node data = doc.getFirstChild();
NamedNodeMap dataAttributes = data.getAttributes();
Attr options = doc.createAttribute("id");
options.setValue("123");
dataAttributes.setNamedItem(options);

ComputerJy
Apr 21st, 2008, 08:06 AM
You're code is not writing the values to the file

eranga262154
Apr 21st, 2008, 08:38 PM
Can you tell me where I'm going wrong.

eranga262154
Apr 24th, 2008, 04:19 AM
I start this in different way. My initial file is like this.

<?xml version="1.0"?>

<data>
<key>467</key>
<name>eranga262154</name>
<id>123</id>
</data>

I want to read the value of id and change it and write back. Here is the way I read the value.


try{
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();

Document doc = docBuilder.parse (new File("records.xml"));

NodeList ints = doc.getElementsByTagName("id");
if(ints.getLength() != 0) {
Element firstKeyElement = (Element)ints.item(0);
NodeList firstKey = firstKeyElement.getChildNodes();

String value = ((Node)firstKey.item(0)).getNodeValue().trim();
int intValue = Integer.parseInt(value);
System.out.println(value);

// change the value and write it to the same location

}
}


How can I write value in this way. I tried setNodeValue() and it wont work. No compile or runtime error either.