j'ai commence a utiliser JDOM pour sa simplicite, mais au detour d'un article, je suis tombe sur DOM4J que j'ai trouver encore
plus facile a utiliser.
Et vous q'en pensez vous ??
j'ai commence a utiliser JDOM pour sa simplicite, mais au detour d'un article, je suis tombe sur DOM4J que j'ai trouver encore
plus facile a utiliser.
Et vous q'en pensez vous ??
Personnellement je trouve DOM4J à peine moins compliqué que le DOM fourni avec Java, c'est-à-dire bien trop verbeux en pratique.
Mais le but est effectivement de choisir ce qui est le plus simple pour ce qu'on a besoin de faire, alors si tu as trouvé un moyen d'utiliser DOM4J qui te convient mieux que JDOM, ne te gêne pas.
('Fin bon, je dis ça, mais je suis persuadé que tu te trompes. Si tu nous montrais ce que tu fais avec DOM4J, et comment tu fais la même chose avec JDOM et qui te semble plus compliquée, je pourrais t'expliquer où est ton erreur... Ou m'avouer vaincu, selon les cas.)
voila comment on creer une arborescence en JDom
ca fait 3 variables qui ne serviront qu'un seule fois. si je veux créer un autre node ou propriété je serais oblige de créer une autre variable. et je trouve ca lourd
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Element etudiant = new Element("etudiant"); racine.addContent(etudiant); Attribute classe = new Attribute("classe","P2"); etudiant.setAttribute(classe); Element nom = new Element("nom"); nom.setText("CynO"); etudiant.addContent(nom);
Pourtant avec dom4j ca aurais donne
je trouve la syntaxe de dom4j plus facile et moin gourmande en variable que JDom. et ca se rapproche plus du concept je pense.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Etudiant = root.addElement("Etudiants"); livre.addElement("nom").addText("etudiant 1"); livre.addElement("prenom").addText("prenom 1"); livre.addElement("classe").addText("classe 1");
Vaincu je m'avoue.
Je n'ai sans doute pas assez bûché DOM4J depuis que j'ai fait des progrès en XML. Ça, et puis, ce qui me dérangeait avant, c'était pas le côté écrire, mais le côté lire. Mais je vois qu'il y a du XPath.
Il y avait aussi le fait qu'on trouve plus facilement comment lire un fichier XML et écrire un fichier XML avec JDOM, mais c'est un peu faible, comme argument.
Notons quand même :
- Tu ne construis pas le même document XML avec JDOM ou DOM4J. Why ? Tu étais supposé comparer les deux.
- Il est inutile de construire des Attribute en JDOM. setAttribute(String, String) est très bien. Cette classe n'est pas spécialement utile, en fait, sauf pour la complétude du modèle.
- Je me doute bien que c'est pour les besoins de l'exemple, mais précisons quelle est la manière correcte de faire cet exemple :
fichier data.xml :
ou bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <root> <Etudiants> <etudiant classe="P2"> <nom>etudiant 1</nom> <prenom>prenom 1</prenom> </etudiant> </Etudiants> </root>
Et fichier DataReader.java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <root> <Etudiants> <etudiant> <nom>etudiant 1</nom> <prenom>prenom 1</prenom> <classe>P2</classe> </etudiant> </Etudiants> </root>
Ou la même chose avec DOM4J
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 // blahblah Document readData(File dataFile) throws IOException, JDOMException { // dataFile est vers data.xml SAXBuilder builder = new SAXBuilder(); return builder.build(dataFile); } // blahblah
a moin de me tromper
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Document readData(File dataFile) throws IOException, JDOMException { // dataFile est vers data.xml SAXReader xmlReader = new SAXReader(); document = xmlReader.read("dataFile"); return document; }
Oui, ça marcherait si le fichier était garanti être dans le répertoire courant et s'appeler dataFile. Après, tout dépend jusqu'à quel point on veut être flexible.
Que souhaites tu faire avec tes fichiers XML? Lecture? Création? Modification?...
J'utilise fréquemment XStream qui est facile à prendre en main et par un jeu d'annotations me permet de gagner énormément de temps.
Billy
Partager