IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Fonctionnement le l'API DOM4J

Date de publication : 18/05/2004

Par stessy delcroix (home page)
 

Le but de cet article est de vous faire décrouvrir le fonctionnement de l'API DOM4J. Cet article sera agrémenté d'exemples simples allant de la simple création d'un nouveau fichier xml, jusqu'à la modification et la sauvegarde de celui-ci.


Introduction
1. Créer son premier document xml
2. Sauvegarde d'un document xml


Introduction

DOM4J est un API open source écrite en java permettant de créer, modifier, enregistrer des documents au format xml.
Cette API est compatible avec les standards DOM,SAX et JAXP.


1. Créer son premier document xml

Nous allons tout de suite passer à la création d'un premier document xml sans toutefois le sauvegarder, nous afficherons simplement le résultat sur la sortie standard.
Cette création n'a rien de compliqué, il suffit juste d'ajouter les éléments les uns à la suite des autres.

Create.java
package com.developpez.dom4j.exemples; import java.io.IOException; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; public class CreateXML { public CreateXML() { //Création du document Document document = DocumentHelper.createDocument(); //Ajout de l'élément racine Element rootElement = document.addElement("developpez"); //Ajout d'un élément dans l'élément racine Element users = rootElement.addElement("utilisateurs"); //Ajout d'un élément dans l'élément utilisateurs avec un attribut ainsi que le texte dans l'élément Element personnes = users.addElement("nom").addAttribute("type","M").addText("Stessy Delcroix"); try { //Méthode utilisée pour écrire sur la sortie standard //le résultat du document créé writeOutput(document); } catch(IOException ioe) { ioe.printStackTrace(); } } public static void main(String[] args) { new CreateXML(); } //Cette méthode sera expliquée dans la section suivante public void writeOutput(Document document) throws IOException { OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter writer = new XMLWriter( System.out, format ); writer.write( document ); } }
System.out
<?xml version="1.0" encoding="UTF-8"?> <developpez> <utilisateurs> <nom type="M">Stessy Delcroix</nom> </utilisateurs> </developpez>

2. Sauvegarde d'un document xml

Passons maintenant à la sauvegarde du document créé précédemment.
La méthode la plus simple consiste à enregistrer le document sans aucune indentation ni retour à la ligne.
Voici un petit exemple:

writeCompactOutput()
public void writeCompactOutput(Document document) throws IOException { OutputFormat compactFormat = OutputFormat.createCompactFormat(); XMLWriter writer = new XMLWriter (new FileWriter("compactOutput.xml"),compactFormat); writer.write(document); writer.close(); }
Et voici le document généré

compactOutput.xml
<?xml version="1.0" encoding="UTF-8"?> <developpez><utilisateurs><nom type="M">Stessy Delcroix</nom></utilisateurs></developpez>
Pas très esthétique à regarder me direz-vous.
Pour pallier à ce manque d'esthétisme, il existe une méthode statique de la classe OutputFormat qui va indenter les éléments enfants, et qui va également effectuer un retour à la ligne pour chaque nouvel élément trouvé. Voici un exemple permettant un tel formattage:

writePrettyOutput()
public void writePrettyOutput(Document document) throws IOException { //Voici la méthode statique permettant le formatage //du document pour une lecture aisée du document xml OutputFormat prettyFormat = OutputFormat.createPrettyPrint(); XMLWriter writer = new XMLWriter (new FileWriter("prettyOutput.xml"),prettyFormat); writer.write(document); writer.close(); }
Et voici le document généré

prettyOutput.xml
<?xml version="1.0" encoding="UTF-8"?> <developpez> <utilisateurs> <nom type="M">Stessy Delcroix</nom> </utilisateurs> </developpez>
Et enfin voici une dernière méthode vous permettant de choisir le style de formatage personnel en fonction des paramètres passés à celle-ci

writePersonalOutput()
public void writePersonalOutput(Document document, int indentationSize, boolean includeNewLine, boolean trimText) throws IOException { //instanciation d'un format de sortie OutputFormat personalFormat = new OutputFormat(); //application d'une indentation personalFormat.setIndentSize(indentationSize); //accepter ou non les retours à la ligne personalFormat.setNewlines(includeNewLine); //accepter ou non d'enlever les caractères d'espacement en début et fin de texte personalFormat.setTrimText(trimText); XMLWriter writer = new XMLWriter (new FileWriter("personalOutput.xml"),personalFormat); writer.write(document); writer.close(); }
L'appel de la méthode writePersonalOutput() avec les paramètres :

  • indentationSize = 2
  • includeNewLine = true;
  • trimText = true;
équivaut à appeler la méthode writePrettyOutput();