Bonjour ,
Je voudrais savoir créer une jointure entre deux fichiers XML ? comme on le fait en base de données relationnelles .
Merci .
Version imprimable
Bonjour ,
Je voudrais savoir créer une jointure entre deux fichiers XML ? comme on le fait en base de données relationnelles .
Merci .
Ben, justement, des fichiers XML ne sont pas une base de données relationnelle.
Après tout dépend quelle technologie tu utilises pour lire ces fichiers, on peut toujours sélectionner le contenu de l'un en fonction de ce qu'il y a dans l'autre, avec XPath ou XQuery par exemple.
Merci , mais est ce que tu as un tutoriel attractif qui me permet de rapidement prendre en main cet API .
ce n'est pas une API mais un langage pour faire des requêtes sur les xml
excelent pour apprendre le XPATH :
http://www.w3schools.com/xpath/default.asp
Est ce que c'est faisable sous JAVA ? .
Oui, et rien ne t'empêche de le programmer toi-même entièrement en Java avec JDOM, et sans utiliser XQuery (voire sans utiliser XPath non plus.)
Il est aussi possible de faire du XQuery en Java, ce qui est le plus proche d'un langage de jointure entre fichiers XML.
Mais d'une manière ou d'une autre, ça manque de tutoriels expliquant, de A à Z, comment faire "l'équivalent d'une jointure entre fichiers XML."
Ou bien tu te sens d'apprendre tout seul XQuery et comment le faire marcher en Java.
Ou bien tu fais des tutoriels pour apprendre JDOM, et à partir de là tu programmes tout seul la récupération de tes données.
À moins que tu aies une logique proche d'un ETL, je recommande plutôt la seconde option :
- Apprendre XML et JDOM.
- Oublier la notion de jointure, qui ne s'applique qu'aux BDDs, puisque tu n'utilises pas de BDD.
- Juste faire ce que tu as besoin de faire.
actuellement j'utilise JDOM pour générer mes fichier XML . Comment dois-je faire pour générer un ( genre de jointure ) ? .
Merci :)
Sont-ils volumineux tes XML?
1/ D'intuition un HashMap, tu stocks une clef qu'on dira primaire avec les infos du premier XML associé, puis tu parcours le deuxième sur la clef "étrangère" pour faire une sorte de jointure avec la clef de la HashMap, sa implique qu'au moins un des deux XML soit en mémoire d'où ma question.
2/ Les base de données utilisent des algorithmes pour les jointures (par bloc, itératif et d'autre mais c'est ceux que je me rappel des cours :D) donc il doit être possible de les appliquer au parcour de 2 XML, sa peux te prendre un peu de temps par contre.
3/ mais j'ai soutenu thelvin sur le fait que prendre les xml comme des tables de base de données c'est étrange :D. Après tu pourrais faire des requêtes xpath pour récuperer certaines valeurs avec des critères de l'autre xml, une opération qui doit être possible mais il faut aimer les langages xml donc les apprendre.
Je te l'ai dit :
- Oublier la notion de jointure.
Il ne faut pas "remplacer par 'un genre de' jointure." Il faut oublier ce que c'est qu'une jointure, et, à la place, faire ce que tu as besoin de faire.
Personne au monde ne t'achètera des jointures. Aucun utilisateur au monde ne sera aidé par des jointures. Tu peux t'en passer.
Il ne faut pas "générer" ta recherche. Il faut la faire, c'est tout.
Idée :
- charger un fichier XML avec JDOM
- charger l'autre fichier XML avec JDOM
(- si besoin, charger d'autres fichiers XML avec JDOM.)
- prendre des données dans un Document
(- si besoin, prendre d'autres données dans un Document)
- tant que tu n'as pas toutes les données dont tu as besoin,
-- prendre d'autres données dans un Document.
Pour l'instant non , mais je pense qu'ils seront volumineux !
Non, puisque je t'ai dit de tous les charger, puis de tous les exploiter en même temps.
Mais en effet, s'ils sont volumineux, ça va être un problème. L'idée de prendre le strict minimum A de l'un, puis le strict minimum B de l'autre en se basant sur A, va rester.
Enfin, quand on se retrouve dans ce cas-là : on arrête de faire du XML et on met tout ça dans une base de données à la place. Ce n'est pas exploitable. (Possibilité entre-les-deux : mettre tout ça dans une base de données XML. Xquery sera bien plus facile à utiliser, là-dedans.)
Merci pour les info's , là , je vais voir selon mes données et opter pour le meilleure . ;)