dom4j-java- how to change the value of an attribute

Arvind picture Arvind · Jun 11, 2012 · Viewed 8.3k times · Source

In a Java program, i am processing an xml using dom4j.

Now, I want to update an attribute of an element.

This is the code I am using to obtain that element--

     SAXReader reader = new SAXReader();
     doc = reader.read(new StringReader(xmlinput));

     Element root = doc.getRootElement();
    for ( Iterator i = root.elementIterator( "cloudwhile" ); i.hasNext(); ) {
            Element foo = (Element) i.next();

Now, I want to update the value of an attribute of element 'foo'--

For this I am trying to use the following code--

    foo.setAttributeValue("indexstart", (String) newstart );

However the above method is deprecated... how do I update the attribute now? Also, I want to take the string representation of the modified xml, immediately after updating the attribute of element 'foo'- how do I do that?

Answer

Andreas Dolk picture Andreas Dolk · Jun 11, 2012

JavaDoc says to use addAttribute(...) instead. The name is somewhat misleading, as it will replace the content of an existing attribute - what is equal to updating a value.

Adds the attribute value of the given fully qualified name. If an attribute already exists for the given name it will be replaced. Attributes with null values are silently ignored. If the value of the attribute is null then this method call will remove any attributes with the given name.