XML + SqlServer [Résolu]

Signaler
Messages postés
492
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
25 avril 2007
-
Messages postés
492
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
25 avril 2007
-
Salut,
Je me met au xml, et c'est vraiment cool mais je me demandais s'il était possible de faire des requetes qui génèrent du xml avec SQL serveur 2000.
Les infos que j'ai trouvée son plutot floues... parfois c'est non, parfois c'est oui, mais les exemple marchent pas... :(

Merci pour toute vos lumières...
AbriBus

5 réponses

Messages postés
259
Date d'inscription
mercredi 3 mai 2006
Statut
Modérateur
Dernière intervention
11 janvier 2010
3
Oui, c'est possible sur SQL Server 2000, mais assez limité...
On peut par le biais de ce genre de requête :

SELECT monchamp1, monchamp2
FROM matable
FOR XML AUTO

Il y a d'autres paramètres que l'on peut passer à FOR XML.
Le hic c'est que c'est très dur de sortir de l'XML comme l'on veut avec cette clause (imbriquer des éléments, mettre certains champs en attribut, etc.).

Dans SQL Server 2005 elle a bien évolué, dautant qu'Express supporte aussi ces fonctions.

-----------------
Christian Robert
Winwise
Messages postés
259
Date d'inscription
mercredi 3 mai 2006
Statut
Modérateur
Dernière intervention
11 janvier 2010
3
Avec FOR XML AUTO, ELEMENTS, mais tu ne pas mixer éléments et attributs...

Avec FOR XML EXPLICIT, tout est possible mais très compliqué.

Avec SQL Server 2005, tout est possible :o)

-----------------
Christian Robert
Winwise
Messages postés
492
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
25 avril 2007
5
Nikel !! c'est tres bien merci.
Je vais fouiller un peu mais saurais tu ou je pourrais trouver une liste de ces fameux parametres ?

Merci encore ;)
Messages postés
492
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
25 avril 2007
5
Le resultat que j'obtient est globalement correct mais, comme tu le soulignais, il y a quelques probleme d'imbrication... ce qui, a la limite n'est pas tant un probleme que ca pour moi et pour le moment. En revanche, j'ai 2 petits soucils:
J'ai constaté que ce qui apparaissait dans la clause SELECT était mis en attribut dans la balise suivant cette forme:
<nom_table attribu_1="[valeur_attribu]"/>
Ainsi, une requete "SELECT nom, prenom, numtel FROM contact LEFT JOIN numero ON numero.contact_id = contact.contact_id FOR XML AUTO" va généré le flux suivant:
<contact nom="duran" prenom="bertran">
       <numero numtel="00.00.00.00.00"/>
</contact>
<contact nom="dupres" prenom="marc">
       <numero numtel="11.11.11.11.11"/>
       <numero numtel="22.22.22.22.22"/>
</contact>
Partant de la, je me suis apercu que sqlserv me renomait mes attribus :S, ce qui pour la meme requete me sort un :
<contact nomX5021_x="duran" prenom="bertran">

       <numero numtel="00.00.00.00.00"/>

</contact>
(il va sans dire que c'est quelque peu genant)
ou alors, carrement il me vire des attribus qu'il devrait mettre, ce qui donne, les deux problemes combinés:
<contact nomX5021_x="duran">


       <numero/>


</contact>
Ce qui, pour le coup devient carrement vexant...
quelqu'un a t il deja rencontré ce probleme ?
Messages postés
492
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
25 avril 2007
5
J'ai mis reponse acceptée meme si en réalité ca ne repond pas tout a fait a ma question parceque le post que tu as fait m'ai fait gagné un enorme temps de recherche. Il continu a me renomer des champs... sauf que au lieu que ce soit l'atribut maintenant c'est la balise lol... ceci dit j'aime beaucoup l'occurence que tu as fais à ELEMENTS, je n'utilise plus que ca.
Je suis preneur pour toutes autres bonne suggestions de ce genre...

Merci
Abribus