Bonsoir
j'aimerais savoir comment à partir des des donnée provenant d'un flux XML faire un base de donnée Mysql pour mieux exploiter les données?
Merci de me guider
Bonsoir
j'aimerais savoir comment à partir des des donnée provenant d'un flux XML faire un base de donnée Mysql pour mieux exploiter les données?
Merci de me guider
Toute la difficulté de ta démarche consiste à transformer des données représentées sous forme d'arbre en données représentées sous forme de simple tableaux, associés les uns aux autres. Je ne connais pas d'outil permettant ce type de transformations
Tu peux adopter la démarche suivante :
- Déterminer les concepts représentés par ton fichier Xml
- Les traduire en entités d'un modèle relationnel
- mettre en place les associations nécessaires
C'est une démarche très classique de modélisation de BDD, mais contrainte par l'architecture de arbre XML.
Un exemple (relativement simple) :
- le fichier XML :
On identifie ici 2 concepts distincts : La personne et l'adresse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <xml> <personne> <nom>Personne1</nom> <prenom>prenom1</prenom> <email>email@1</email> <adresse> <rue>nom de rue</rue> <codepostal> 00000</codepostal> <ville>Nom de ville</ville> </adresse> </personne> <personne> <nom>Personne2</nom> <prenom>prenom2</prenom> <email>email@2</email> <adresse> <rue>nom de rue2</rue> <codepostal> 00002</codepostal> <ville>Nom de ville2</ville> </adresse> </personne> </xml>
On peut transformer chaque concept en table :
- Table 1 - Personne :
- Table 2 - Adresse :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 |----------- |Personne |----------- |Nom |Prenom |Email |-----------
On a donc bien nos 2 tables, mais pas de lien entre elles. On n'aura donc aucun moyen de savoir que l'adresse 1 appartient bien à la personne 1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 |----------- |Adresse |----------- |rue |codepostal |ville |-----------
On peut dans ce cas ajouter une clé primaire dans la table personne et l'utiliser comme clé étrangère dans la table adresse. On en profitera pour ajouter une clé primaire à l'adresse, pour l'évolutivité. Les tables au final ressembleront à :
- Table 1 - Personne :
- Table 2 - Adresse :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 |----------- |Personne |----------- |IdPersonne <pk> |Nom |Prenom |Email |-----------
Je ne connais pas tes compétences en termes de BDD, j'espère donc que ces explications ne te paraissent pas simplistes ou au contraire obscures. Elles sont cependant nécessaires à une résolution correcte de ton problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 |----------- |Adresse |----------- |IdAdresse <pk> |IdPersonne <fk references Personne.IdPersonne> |rue |codepostal |ville |-----------
Tu peux faire un tour par là si tu as besoin de t'initier aux concepts des BDD relationnelles.
merci pour ta reponse
au faite j'ai des compétences en BDD car je l'utilise bcp sur mon site.
mon problème est que je veux intégrer des données provenant par RSS d'un autre site en faire une base de donnée et l'exploiter avec des requêtes perso...
mon souci est de créer une base à partir du fichier XML générer par le site en question.
Salut,
Moi je driais que le plus simple derais de te faire une table qui rassemble l'ensemeble des champs que tu es succeptible d'avoir (une ou des tables...).
Ensuite tu fais pour chauqe flux une correspondance des colonnes/balises par rapport a ta base.
Je sais pas si tu comprends mon idée?
Guigo
Tu veux le faire sur un seul site connu à l'avance ? Ou sur plusieurs dynamiquement ?
Si c'est sur plusieurs sites, je pense que c'est possible, car les flux RSS sont structurés de manière similaire pour pouvoir être lus par les lecteurs spécifiques.
Sur un seul, tu peux appliquer ma méthode, ça devrait marcher plutôt bien... (Je pense qui guigo te propose d'ailleurs à peu près la même chose)
oui effectivement je veux le RSS d'un seul site et les donnée xml est pareil à chaque.
Je devrais dc adopté votre solution c'est à dire faire une table ayant pour colonne les balises dont j'ai besoin dans le fichier XML.
le gros problème c'est comment m'y prendre par uns script PHP? un scrip qui permettra de faire entrer ligne par ligne les élements du XML dans la base de donnée. c'est l'objet même de mon post
Si je comprends bien, ton problème porte davantage sur le parsing du XML que sur la gestion de la BDD. Pour cela je te conseille d'aller jeter un coup d'oeil à cette section des cours : PHP et XML
Bon courage![]()
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.
Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]
Merci pour le lien mais tu me complique encore la tache.
Je vais plutot me concentrer sur LOAD XML INFILE disponible sur MySql 6. mon problème c'est que j'utilise wamp 2 et la version MySQL est 5.1 dc pas possible d'utiliser LOAD XML INFILE.
Après téléchargement et installation j'exécute les commandes en mode console et le moteur de stockage est InoBB ce qui m'arrange guère et aussi impossible de récupérer la base de donnée créer car il n'y a pas d'interface comme phpmyadmin.
Alors si vous pouvez m'aider dans se sens ...
je crois que c'est OK
grâce à la commande RESTORE TABLE .....
Donc je peux mettre resolu sur le post![]()
Partager