Jump to content
Sign in to follow this  
mina

xml a partir d'une BDD

Recommended Posts

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>

Share this post


Link to post
Share on other sites

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 !

Share this post


Link to post
Share on other sites
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 :thumbsup: .

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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites

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 ...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...