Génération d'XML avec ASP.net via une BDD

Résolu
Utilisateur anonyme - 6 déc. 2006 à 15:27
 Utilisateur anonyme - 10 déc. 2006 à 14:45
Bonjour,


J'ai conçu une galerie produits en Flash et j'ai besoin de récupérer
dynamiquement des donnés via du XML.


Pour l'instant mes données sont donc dans un BDD access et je voudrais que
ASP.net (avec VB) me génère mon XML avec les donnés qui se trouvent donc dans
ma base de donnée access.


Le problème c'est que je ne sais pas du tout comment m'y prendre. Pour la
connexion à ma BDD c'est très simple, ca il n'y a pas de problème mais je sais
pas comment faire pour générer mes lignes de xml et afficher les données dans
mes lignes XML... <!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600"
o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f"
stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="Image_x0020_1" o:spid="_x0000_i1025" type="#_x0000_t75"
style='width:11.25pt;height:11.25pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\DOCUME~1\Fabien\LOCALS~1\Temp\msohtmlclip1\02\clip_image001.gif"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->


Comment vous y prendriez vous ou tout simplement avez-vous déjà vu une source
qui le faisait ?


Petite précision : mon fichier xml se présente de cette manière la :




 

 



(et non pas
<num>1</num>

Fabien S. (Alias: fabienfs)

4 réponses

SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010
7 déc. 2006 à 22:18
Bonjour,
Ce n'est pas très compliqué :
'1 . tu remplis un dataset avec les tables de ta base :            MonDS.Clear()<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>




            MaConnexion.Open()






           
Dim selectSQL AsString = "SELECT * FROM ma table WHERE etc etc..."






            MaCommande = New OleDbCommand(selectSQL, MaConnexion)






            mon

DataAdapter.SelectCommand = MaCommande






            monDataAdapter.Fill(MonDS, "Ma_table")
-------
copier toutes les autres tables
------


         MaConnexion.Close()






 '
2.  tu recopies le Dataset dans un fichier Xml (avec ecrasement éventuel)



         MonDS.WriteXml(Server.MapPath("~/mon_chemin_relatif/MonFichier.xml"))




et là j'espère qu'il aura la forme souhaitée, mais il y a des surcharges !
@+Gilles
3
SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010
8 déc. 2006 à 22:39
MonDS voulait dire  MonDataset. oui, c'était pas bien clair
tu dois écrire
Dim MonDS As New Dataset
monDataAdapter.Fill(MonDS, "produits") ne peut pas marcher si MonDS est une connexion.
une surcharge est , si tu veux , une variante d"une fonction ou d'un méthde avec des arguments différents selon la situation.
ex :writeXml(fileName as string) et writeXml(fileName as string,writehierarchy as boolean)
Consulte l'aide de visual studio, on ne peut pas tout savoir !
@+G
3
Nickel, merci !

Voici mon code complet pour info :

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load



Dim DBobjConn As OleDbConnection
DBobjConn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Request.MapPath("~/App_Data/products.mdb"))
DBobjConn.Open()



Dim MonDS As New DataSet
Dim MaCommande As New OleDbCommand
Dim monDataAdapter As New OleDbDataAdapter



MonDS.Clear()



Dim selectSQL As String = "SELECT * FROM product"



MaCommande = New OleDbCommand(selectSQL, DBobjConn)



monDataAdapter.SelectCommand = MaCommande



MonDS.DataSetName = "products"



monDataAdapter.Fill(MonDS, "product")



DBobjConn.Close()
MonDS.WriteXml(Server.MapPath("~/products.xml"))
End Sub


Bonne journée

A++
3
Utilisateur anonyme
8 déc. 2006 à 19:31
Salut,

Quand tu parles de DataSet tu veux parler de DataList ?


J'ai juste un blem avec "MonDS", je sais pas en quoi je doit le déclarer ??  (il me fait aussi une erreur avec la ligne monDataAdapter.Fill(MonDS, "produits"))

Encore une dernière chose, que veux-tu dire par il y aura des surcharges ??

Pour info voici mon code modifié :


<hr />


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim MonDS As New OleDbConnection




        Dim DBobjConn As OleDbConnection
        DBobjConn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Request.MapPath("~/App_Data/db_products.mdb"))
        DBobjConn.Open()



        Dim MaCommande As New OleDbCommand
        Dim monDataAdapter As New OleDbDataAdapter





        MonDS.Clear()



        Dim selectSQL As String = "SELECT * FROM produits"



        MaCommande = New OleDbCommand(selectSQL, DBobjConn)



        monDataAdapter.SelectCommand = MaCommande



        monDataAdapter.Fill(MonDS, "produits")



        DBobjConn.Close()



        ' 2.  tu recopies le Dataset dans un fichier Xml (avec ecrasement éventuel)
        MonDS.WriteXml(Server.MapPath("~/admin/test.xml"))
    End Sub




Grand merci pour ton aide !

A++

Fabien S. (Alias: fabienfs)
0
Rejoignez-nous