Skip to Main Content

Java EE (Java Enterprise Edition) General Discussion

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

adding element to XML File with JDOM

843834Sep 16 2002 — edited Nov 24 2003
Hi,

I trying to create a XML File which has several elements with the same hierarchical level, meanning add a node..I explain :

I write and run this :


import java.util.List;
import java.util.Iterator;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.DOMBuilder;
import org.jdom.output.XMLOutputter;
import org.jdom.adapters.DOMAdapter;

class addXML {

public static void main(String[] args) {
try {
Element rootElement = new Element("modules");
Element moduleElement = new Element("module");

// defining the moduleElement child elements
Element loadStatusElement = new Element("module-load-status");
Element descFilenameElement = new Element("module-desc-filename");
Element descPathElement = new Element("module-desc-path");
Element moduleTypeElement = new Element("module-type");
Element modulePackageElement = new Element("module-package");
Element moduleInstallationDateElement = new Element("module-installation-date");

// create the document
Document doc = new Document(rootElement);

doc.getRootElement().addContent(moduleElement);
moduleElement.setAttribute("name","Info");
moduleElement.setAttribute("version","1.1");
moduleElement.setAttribute("id","INFO");

moduleElement.addContent(loadStatusElement);
moduleElement.addContent(descFilenameElement);
moduleElement.addContent(descPathElement);
moduleElement.addContent(moduleTypeElement);
moduleElement.addContent(modulePackageElement);
moduleElement.addContent(moduleInstallationDateElement);

List modulesNodes = doc.getRootElement().getChildren();

/* add a new node */
Element newModule = new Element("module");
newModule.setAttribute("name","Options");
newModule.setAttribute("version","1.1");
newModule.setAttribute("id","OPT");

modulesNodes.add(0,newModule);

// Outputting XML data
XMLOutputter fmt=new XMLOutputter();
File myXML = new File ("xavier.xml");
fmt.output(doc,new FileOutputStream(myXML));

} catch (IOException e) {
e.getMessage();
}
}
}

and I get this....

<?xml version="1.0" encoding="UTF-8" ?>
<modules>
<module name="Info" version="1.1" id="INFO">
<module-load-status>on</module-load-status>
<module-desc-filename></module-desc-filename>
<module-desc-path></module-desc-path>
<module-type></module-type>
<module-package></module-package>
<module-installation-date></module-installation-date>
</module>
<module name="Options" version="1.1" id="OPT" />
</modules>

and I want add elements to Options module like this :

<?xml version="1.0" encoding="UTF-8" ?>
<modules>
<module name="Info" version="1.1" id="INFO">
<module-load-status>on</module-load-status>
<module-desc-filename></module-desc-filename>
<module-desc-path></module-desc-path>
<module-type></module-type>
<module-package></module-package>
<module-installation-date></module-installation-date>
</module>
<module name="Options" version="1.1" id="OPT">
<module-load-status>on</module-load-status>
<module-desc-filename></module-desc-filename>
<module-desc-path></module-desc-path>
<module-type></module-type>
<module-package></module-package>
<module-installation-date></module-installation-date>
</module>
</modules>

I get the error, "can't create" it says there is already an existing element having the same parent!!

any ideas ??
regards

Xavier


Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Dec 22 2003
Added on Sep 16 2002
1 comment
168 views