# JDOM

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/JDOM
> Markdown URL: https://mediated.wiki/source/JDOM.md
> Source: https://en.wikipedia.org/wiki/JDOM
> Source revision: 1260201162
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

{{howto|date=May 2011}}
{{Infobox Software 
| name                   = JDOM
| caption                = 
| developer              =
| latest release version = 2.0.6.1
| latest release date    = {{release date|2021|12|09}}
| operating system       = [Cross-platform](/source/Cross-platform)
| programming language   = [Java](/source/Java_(programming_language))
| genre                  = [XML binding](/source/XML_data_binding)
| license                = Similar to [Apache License](/source/Apache_License)
| website                = {{URL|http://jdom.org}}
}}

[[Image:jdom.png|thumb|right|200px|JDOM in [LePUS3](/source/Lepus3)]]
[[Image:Jdom-factories.png|thumb|right|300px|JDOM factories in [LePUS3](/source/Lepus3)]]

'''JDOM''' is an [open-source](/source/open-source_software) [Java](/source/Java_(programming_language))-based document object model for [XML](/source/XML) that was designed specifically for the [Java platform](/source/Java_platform) so that it can take advantage of its language features.<ref>{{Cite web |title=JDOM |url=https://mvnrepository.com/artifact/org.jdom/jdom |access-date=October 14, 2024 |website=Maven Repository}}</ref>  JDOM integrates with [Document Object Model](/source/Document_Object_Model) (DOM) and [Simple API for XML](/source/Simple_API_for_XML) (SAX), supports [XPath](/source/XPath) and [XSLT](/source/XSL_Transformations).<ref>{{Cite web |title=How to read XML file in Java – (JDOM Parser) |url=https://mkyong.com/java/how-to-read-xml-file-in-java-jdom-example/ |access-date=October 14, 2024 |website=Mkyong.com|date=21 December 2009 }}</ref>  It uses external parsers to build documents. JDOM was developed by Jason Hunter and Brett McLaughlin starting in March 2000.<ref>{{Cite web |title=artima - A Design Review of JDOM |url=https://www.artima.com/articles/a-design-review-of-jdom |access-date=2024-10-14 |website=www.artima.com}}</ref> It has been part of the [Java Community Process](/source/Java_Community_Process) as JSR 102, though that effort has since been abandoned.<ref>{{Cite web |title=The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 102 |url=https://www.jcp.org/en/jsr/detail?id=102 |access-date=2024-10-14 |website=www.jcp.org}}</ref>

== Examples ==
Suppose the file "foo.xml" contains this XML document:

<syntaxhighlight lang="xml">
<shop name="shop for geeks" location="Tokyo, Japan">
  <computer name="iBook" price="1200$" />
  <comic_book name="Dragon Ball vol 1" price="9$" />
  <geekyness_of_shop price="priceless" />
</shop>
</syntaxhighlight>

One can parse the XML file into a tree of Java objects with JDOM, like so:

<syntaxhighlight lang="java">
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new FileInputStream("foo.xml"));
Element root = doc.getRootElement();
// root.getName() is "shop"
// root.getAttributeValue("name") is "shop for geeks"
// root.getAttributeValue("location") is "Tokyo, Japan"
// root.getChildren() is a java.util.List object that contains 3 Element objects.
</syntaxhighlight>

In case you do not want to create the document object from any file or any input stream, you can create the document object against the element.

<syntaxhighlight lang="java">
Element root = new Element("shop"); // here <shop></shop> is the root
Document doc = new Document(root);  // create a new document with the supplied element as the root
</syntaxhighlight>

As a converse, one can construct a tree of elements, then generate an XML file from it, as in the following example:

<syntaxhighlight lang="java">
Element root = new Element("shop");
root.setAttribute("name", "shop for geeks");
root.setAttribute("location", "Tokyo, Japan");
Element item1 = new Element("computer");
item1.setAttribute("name", "iBook");
item1.setAttribute("price", "1200$");
root.addContent(item1);
// perform similar steps for other elements
XMLOutputter outputter = new XMLOutputter();
outputter.output(new Document(root), new FileOutputStream ("foo2.xml"));
</syntaxhighlight>

==References==
{{reflist}}

== External links ==
{{Official Website}}

Category:Java (programming language) libraries
Document Object Model
Category:XML-based standards

{{Compu-lang-stub}}

---
Adapted from the Wikipedia article [JDOM](https://en.wikipedia.org/wiki/JDOM) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/JDOM?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
