adding element to XML File with JDOM
843834Sep 16 2002 — edited Nov 24 2003Hi,
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