mina Posté 12 Avril 2007 Posté 12 Avril 2007 Bonjour, je suis vraiment NOVICE en xml Ma question est la suivante : Comment extraire des données d'une base de données(je travaille avec mysql) et les mettre dans un format XML et automatiquement. exemple Id Nom Prénom 1 Dupont Paul Fichier xml <id>1</id> <nom>Dupont</nom> <prenom>paul</prenom>
biouche Posté 13 Avril 2007 Posté 13 Avril 2007 Bonjour !! C'est assez amusant que tu poses cette question maintenant car je réfléchis à ce problème en ce moment... Je propose de poser le problème comme ceci : On cherche à modéliser un nouveau type de données répondant aux conditions suivantes : 1/ le modèle doit permettre de décrire n'importe quel résultat de recherche dans une base de données. 2/ le modèle doit être conforme à la syntaxe XML. Travaillant sous PHP 5, j'ai pensé à créer une nouvelle classe étendant la classe DOMDocument (et donc répondant au 2ème critère) dont chaque instance peut être construite à partir de n'importe quel tableau ayant la même forme que ceux renvoyés par la fonction mysql_fetch_array (1er critère). Il reste à savoir quelle forme on veut donner aux résultats en XML. Je propose ceci : <?xml version="1.0" encoding="UTF-8"?><result count="2"> <row id="1"> <id>1</id> <nom>Dupont</nom> <prenom>Paul</prenom> </row> <row id="2"> <id>2</id> <nom>Durand</nom> <prenom>Jean-Pierre</prenom> </row></result> Bien sûr le problème de l'encodage des données se pose. Quel encodage pour les données en XML ? Doit-il être le même que celui utilisé pour stocker les données dans la BDD ? Il y aura donc des histoires de détection et/ou de conversions. Voilà, je n'ai évidemment pas parlé des détails d'implémentation, je viens tout juste de commencer à travailler sur le modèle. A bientôt !
robinsonvendredi Posté 13 Avril 2007 Posté 13 Avril 2007 créer une nouvelle classe étendant la classe DOMDocument Certaines bases de données permettent de générer un fichier XML avec une simple commande SQL = une ligne de code . Sinon, on peut créer des noeuds Table, Ligne, Colonne, et construire un document DOM à l'aide des méthodes createElement et AppendChild en lisant en boucle les données de la base où à partir d'un array comme tu le suggères. Pour ce qui est de l'encodage, perso j'utilise ISO-8859-1
biouche Posté 13 Avril 2007 Posté 13 Avril 2007 Certaines bases de données permettent de générer un fichier XML avec une simple commande SQL = une ligne de code. C'est vrai, mais ce n'est pas le cas de tous les SGDB. De plus, PHP propose de son côté un modèle quasi identique (un simple array à 2 dimensions) pour toutes ses extensions de gestion de bases de données : fonctions mysql, mysqli, sqlite... (je ne compte pas PDO). C'est avec ce modèle que mon modèle interfacera. Sinon, on peut créer des noeuds Table, Ligne, Colonne, et construire un document DOM à l'aide des méthodes createElement et AppendChild en lisant en boucle les données de la base Qu'entends-tu par "en lisant en boucle les données de la base" ? Pour ce qui est de l'encodage, perso j'utilise ISO-8859-1 Je comprends; mais à des fins de réutilisabilité, je ne peux pas parier que tout le monde utilise le même encodage.
robinsonvendredi Posté 13 Avril 2007 Posté 13 Avril 2007 J'ai indiqué les solutions que j'ai utilsé au vu du topic, mais ce n'est certes pas une solution à ton extension de classe php. Bon courage.
mina Posté 13 Avril 2007 Auteur Posté 13 Avril 2007 bon moi je voudrais bien que vs me donniez cette requete sql sans trop me preocupper du DOM car je ss trés debutante en la matiére!
robinsonvendredi Posté 13 Avril 2007 Posté 13 Avril 2007 syntaxe sql server : SELECT Table.champ FROM Table FOR XML RAW, ELEMENTS Mais il existe des variantes, à voir la doc MS Désolé je ne sais pas si c'est possible avec mysql. Pour ce qui est de manipuler le DOM, il doit bien y avoir des tutoriels XML pour ton langage de prédilection. Mon code est en vb si ça peut t'interesser ...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant