JDOM es una librería clásica para Java cuya finalidad es manipular datos formateados en XML, bien leyendo información de un fichero XML, manipulando o editando en memoria su contenido, o generando nuevos ficheros en XML.
Su potencia reside en la simplicidad de su uso y en que permite realizar practicamente cualquier operación que se desee aplicar a un fichero XML o a un conjunto de datos que se quiera formatear en dicho estándar.
JDOM es una más de las múltiples herramientas y tecnologías que permiten trabajar con XML desde Java. Es óptima para manipular y crear ficheros en XML, pero hay que tener en cuenta que existen otros mecanismos y herramientas, como XmlBeans o JAXB (a partir de la versión 6 de Java) que nos permiten mapear XML a objetos de clases Java de forma más automática y eficaz. Por lo tanto, hay que considerar que solución se desea aplicar o que problemática resolver antes de juzgar si JDOM puede ser una herramienta útil para cada caso.
Algunos ejemplos sencillos del uso de JDOM son los siguientes:
1. Procesar un fichero en XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/* Lee XML */ SAXBuilder builder = new SAXBuilder(); Document doc = builder.build(new File("fichero.xml")); /* Obtiene nodo raiz */ Element root = doc.getRootElement(); /* Obtiene todos los nodos que cuelgan del raiz */ List<Element> allChildren = root.getChildren(); /* Obtiene todos los nodos que cuelgan del raiz y que se llaman 'noticia' */ List<Element> namedChildren = root.getChildren("noticia"); /* Obtiene primer nodo a partir del nodo raiz y que se llame 'noticia' */ Element child = root.getChild("noticia"); /* Obtiene contenido del nodo hijo */ String text = child.getText(); |
2. Manipular el contenido de un fichero en XML
1 2 3 4 |
/* Añade un nuevo nodo al nodo raiz */ Element newChild = new Element("node"); newChild.setText("My content"); root.addContent(newChild); |
3. Crear un fichero en XML
1 2 3 4 |
/* Crea un fichero XML */ XMLOutputter outputter = new XMLOutputter(); outputter.setFormat(Format.getPrettyFormat()); outputter.output(doc, new FileWriter("nuevoFichero.xml")); |