Java et XML

Hello.

Alors voila.
J’ai un petit problème avec Java et XML.
Je dois créer pour les cours un programme de P2P et je suis chargé de la partie Base de Données du serveur. Le prof veut qu’on fasse ça avec du XML.

J’ai trouvé JDOM pour faire ça, mais j’ai encore un ou deux problèmes avec ça.

Le premier est que je n’arrive pas à ajouter les données qui viennent des clients dans l’arborescence du serveur. Il y a une erreur qui m’indique qu’il y a déjà une racine, et que ce n’est pas possible d’en ajouter une autre.

Le second concerne les recherches. J’ai vu qu’il était possible de mettre des filtres avec JDOM, mais n’est-il pas possible de faire des recherches qui renvoient directement les données associées à ce que l’on recherche (comme dans un SGBD classique)??

Sinon, quelqu’un connaît-il un autre moyen (plus simple) de gérer une base de données XML dans Java ??

Bon alors XML va falloir redescendre sur terre un jour (les profs et la hype). XML c’est un format d’echange de donnees. Une base de donnee « XML » ca veut a mon sens a moi que je l’ai rien dire. Alors c’est genial et tout pour ca, c’est beau whatever mais c’est pas un format optimise et adapte ni de stockage, et surtout, surtout, surtout, surtout (y en a assez?) pas un format de strucutre de donnnees in memory dans un serveur ou un programme. Bien sur y a des exceptions, parfois on veut stocker du XML parceque justement on va se faire charger par autre chose ou parcequ’on veut que ca soit facilement lisible par un etre humain (bien que le XML pour un etre humain… beurk quoi, je prefere un CSV a la limite) ou alors juste parceque vraiment accesoirement tu veux charger qu’une partie des donnees que tu viens de recevoir.

Donc, utiliser XML pour parler aux clients, utiliser XPATH ou whatever pour reconnaitre les requetes, classer/router les data ok, utiliser XML pour enregistrer les data sur le disque, ok a la limite, utiliser XML pour gerer la config du serveur ok, mais pas pour faire des requetes complexes ou quoi dessus. C’est lent, c’est moche, ca sert pas a ca :stuck_out_tongue: A vouloir fourer du XML partout la ou il en faudrait pas on se retrouve avec des systeme over engineeres qui sont lents et qui font pas vraiment ce qu’on veut parceque c’est pas adapte (deja vu 500 fois depuis 2001, l’annee du « XML dans tout les programmes du simulateur de vol a la compta AS400 et t’as pas d’investissement si t’as pas XML dans ton buisness plan »).

Donc moi je conseille, tu design ta structure de donnee qui est la plus adaptee a ton programme et a tes algos (la structure de donnees va de pair avec un algo et des besoins tu peux pas designer un sans designer l’autre), et apres tu reflechit comment tu peux aller de ca a du XML ou du XML a ca. XML c’est la couche d’interface, pas le coeur du truc :stuck_out_tongue:

Voila, c’est pas specialement une gueulante contre ta question hein, c’est juste un mini coup de gueule contre ces gens qui veulent mettre du XML de partout tout pas beau. Parser du XML c’est deja suffisament complique pour pas en faire ton format interne, c’est du TEXTE un fichier XML, c’est crade du texte, et meme si t’as tout charge dans un gros DOM oriente objet et tout de whatmille megas pour trois pages de data, tu est completement overkill parceque pour etre suffisament generique pour supporter tout les schema de donnees tu dois avec des tonnes de trucs qui te servent a rien. C’est pour ca qu’on invente des moyens de serialization malignes d’objets et de structure d’objets en XML ou en theorie le programmeur a rien a faire. En internet t’as ta structure de data jolie et optimisee pour aller avec ce que tu veux en faire, et quand tu veux communiquer, hop, ca fait du XML tout seul et inversement de l’autre cote. Comme ca a l’interface (la ou le XML a un sens) c’est facile a utiliser :stuck_out_tongue:

Enfin je dis ca, je dis rien.

PS, edit: par exemple pour ton serveur je suis sur que tu auras des hashtable de partout avec recherche par clef pour les client logues, les fichiers offerts par le P2P, les autres clients du reseau, etc, gerer ca sur un objet XML (meme si c’est pas le fichier direct) c’est une heresie. Tu as des hashtable que tu serialize en XML et que tu envoie sur le fil, de l’autre cote tu charge et tu regenere une hashable. Enfin je dis peut etre des evidences et c’est pas de ca que tu parlais :stuck_out_tongue: