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 ??
Version imprimable
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 lourdCode:
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:
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");
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
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:
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:
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 DOM4JCode:
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:
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.
J'ai rien contre JDom, mais j'ai une tres courte experience avec xml et java (moins de 48h).
Mais je voudrais pouvoir utiliser une API qui va me permettre d'aller tres vite.
Vu que tu construis des documents, alors que moi j'ai plutôt tendance à les lire ou les transformer, il semble que finalement mon avis ne vaille pas grand-chose :).
Mais quand tu as dit qu'en JDOM, pour créer un document il faut faire plein de variables, et c'est plus lourd qu'en DOM4J, ça m'a l'air vrai. Je n'avais juste pas remarqué.
A priori il y a des chances que ça te convienne mieux.
Vu les besoins que tu décris, le passage "données récupérées -> XML" me semble être une opération de sérialisation. Ce qui se fait, en effet, mieux avec des choses comme XStream... Une fois qu'on la connaît bien. J'ignore si le XML ainsi obtenu est facile à intégrer ensuite à de la transformation XSLT.
en fait la partie la plus important est la transformation du par le model (xslt).
je pensais au début partir d'une DTD pour créer un fichier (ou document) xml a partir des données de la BD et ensuite transformer a partir du xslt. Voila en gros ce que je voudrais faire. et que je fais en partie avec JDom (et dans une moindre mesure avec dom4j).