JDOM
JDOM es una biblioteca de código abierto para manipulaciones de datos XML optimizados para Java. A pesar de su similitud con DOM del consorcio World Wide Web (W3C), es una alternativa como documento para modelado de objetos que no está incluido en DOM. La principal diferencia es que mientras que DOM fue creado para ser un lenguaje neutral e inicialmente usado para manipulación de páginas HTML con JavaScript, JDOM se creó específicamente para usarse con Java y por lo tanto beneficiarse de las características de Java, incluyendo sobrecarga de métodos, colecciones, etc. Para los programadores de Java, JDOM es una extensión más natural y correcta. Se asemeja al sistema RMI optimizado para Java (invocación remota de métodos), y se amolda mejor que CORBA (arquitectura de intermediario solicitador de objetos comunes) que es más neutral respecto a los lenguajes.
JDOM | ||
---|---|---|
Información general | ||
Tipo de programa | Biblioteca | |
Desarrollador | JDOM Project | |
Licencia | Apache-style | |
Información técnica | ||
Programado en | Lenguaje de programación Java | |
Plataformas admitidas | máquina virtual Java | |
Versiones | ||
Última versión estable | 2.0.4 ( 8 de noviembre de 2012 (10 años, 9 meses y 19 días)) | |
Enlaces | ||
Como dato curioso, aunque JDOM parezca un acrónimo de Java Document Object Model (Documento de Modelado de Objetos en Java), esto no es así, siendo desmentido por el propio proyecto de JDOM.
Ejemplos
Supongamos que el archivo "foo.xml" es el siguiente:
<tienda nombre="tienda para geeks" ubicacion="Tokio, Japon">
<computadora nombre="iBook" precio="$1200" />
<historieta nombre="Dragon Ball Volumen 1" precio="$9" />
<nivel_geek_de_la_tienda precio="sin precio" />
</tienda>
Es posible parsear el documento XML en un árbol de objetos Java con JDom:
SAXBuilder builder = new SAXBuilder ();
Document doc = builder.build (new FileInputStream ("foo.xml"));
Element root = doc.getRootElement ();
root.getName (); // devuelve "tienda"
root.getAttributeValue ("nombre"); // devuelve "tienda para geeks"
root.getAttributeValue ("ubicacion"); // devuelve "Tokio, Japon"
root.getChildren (); // devuelve una [[java.util.List]] de objetos que tiene tres Element
También es posible realizar el proceso inverso, es decir construir un árbol de elementos y luego crear un archivo XML:
Element root = new Element ("tienda");
root.setAttribute ("nombre", "tienda para geeks");
root.setAttribute ("ubicación", "Tokio, Japon");
Element item1 = new Element ("computadora");
item1.setAttribute ("nombre", "iBook");
item1.setAttribute ("precio", "$1200");
root.addContent (item1);
// Realizamos lo mismo con los elementos restantes
XMLOutputter outputter = new XMLOutputter ("",true);
try{
outputter.output (new Document(root),new FileOutputStream ("foo2.xml"));
} catch (Exception e){
e.getMessage();
}