IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Fabriquer un fichier XML avec des imbrications


Sujet :

ASP.NET

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut Fabriquer un fichier XML avec des imbrications
    Salut

    Je ne suis pas trop fort en XML et je rencontre un souci pour faire des imbrications.
    Voici l'exemple de ce que je dois faire :
    <listepa>
    <annonce>
    <reference>TASAS1254</reference>
    <contrat>xxxxxxx</contrat>
    <produit>1</produit>
    <liste_titres>
    <titre>
    <societe>11</societe>
    <jx>027</jx>
    </titre>
    </liste_titres>
    <liste_photos>
    <photo>/photos/photo_81220_1.jpg</photo>
    <photo>/photos/photo_81220_2.jpg</photo>
    </liste_photos>
    <texte>Terrain situ? dans le bourg. 600m? environ. Viabilis? expos? Est. Plusieurs lots disponible. Faire tr?s vite</texte>
    <rubrique>511000</rubrique>
    <pays>France</pays>
    <ville>PARIS</ville>
    <postal>75002</postal>
    <prix>55000</prix>
    <tel_agence>01 40 63 37 38</tel_agence>
    <complements>
    <CH>0</CH>
    <B>0</B>
    <AN></AN>
    </complements>
    </annonce>
    </listepa>
    Et le code que j'emploi pour l'instant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim sqlCom As SqlCommand = New SqlCommand("SELECT * FROM Annonce", conConnex)
    Dim Adapteur As SqlDataAdapter = New SqlDataAdapter(sqlCom)
    Dim oCommandBuilder As New SqlCommandBuilder(Adapteur)
    Dim ds As New DataSet
    Dim toto As New StreamWriter(ficXML, True, codage)
    Adapteur.Fill(ds)
    ds.DataSetName = "listepa"
    ds.Tables(0).Prefix = "annonce"
    ds.WriteXml(toto)
    Alors :
    <listepa> c'est le fichier en entier, j'ai réussi avec le ds.DataSetName.
    <annonce> faudrait que je trouve comment travailler le nom de la table du DS
    Mon plus gros problème, pour l'instant se trouve sur <liste_titres> et <complements>. J'ai essayé de faire des balises XML dans ma requête, mais le résultat n'est pas trés bon.
    Enfin, pour <liste_photos> c'est carrément l'enfer car j'ai une fonction qui va interroger l'existance d'un fichier JPG sur le disque en fonction de l'ID de l'annonce, donc pas du tout par SQL, amis bon, ça peut être traiter dans un autre topic, plus tard.

    Pouvez vous m'aider à mettre en place le DataSet qui va bien. Je n'ai jamais fait de DS avec plusieurs tables et encore moins avec des tables qui doivent s'imbriquer. Et en plus, dans la base de donnée, tout est dans une seule table. Bilan, je ne sais même pas par où commencer.

    Merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 400
    Points : 459
    Points
    459
    Par défaut
    Bonsoir,

    Bon je vais taché de faire un peu le tour de tes contraintes et demandes .

    Tout d'abord, la propriété suivante d'une DataTable contient les relations établies entre les differentes tables si multitables il y a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
     Dim oDataset As New Data.DataSet
     oDataset.Tables(0).ChildRelations
    ...
    Plus théorique, ta demande sur le multitable/monotable . En effet, la technique que je te proposais plus haut avait pour but de te simplifier la vie, mais si il faut que tu créés plusieurs DataTable(s) à partir d'une DataTable, c'est pas pareil. C'est détourner la complexité rencontré avec le XML vers une complexité autre avec un DataSet (ça y'en a etre français?).

    Bref, la fonction 'WriteToXml' est vraiment faite pour serializé un dataset sans avoir à retouché quoique ce soit. Si le dataset produit ne correspond pas (de loin) à tes attentes, vaut mieux repasser en mode mimine .

    Enfin si tu persistes dans cette voie, on peut voir comment faire croire à un DataSet qu'il y a plusieurs Tables alors qu'il n'y en a qu'une (côté SQL) .

    Voilà, affaire à suivre

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide.

    Enfait, mon véritable souci est l'encodage.
    Lorsque j'ai fait un test avec le WriteToXML, je me suis aperçu que le fichier était correctement codé. Du coup, je me suis dit ça allait le faire.

    Mais tu as vu la structure XML que je dois cracher, pas simple à mettre en oeuvre. Et en plus, il y a une aprtie de la structure XML qui ne se toruve pas dans la BDD, mais qui est générée par une fonction qui va chercher l'existantce (ou pas) d'un fichier et qui en fait une chaine qui sera un lien à l'arrivée.

    Donc, avant d'abdiquer, j'aimerais bien comprendre comment faire pour avoir des tables liées entre elle dans un DataSet. Donc si tu as des explcaitions pour faire croire au DataSet qu'il y a plusieurs tables.
    Pour l'instant je suis passer sur une phase de test, j'ai créé plusisuer table que je tente d'imbriquer, je vais mettre en place le "ChildRelation", je ne connais pas, donc....

    En tout cas merci pour ton aide.

  4. #4
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 400
    Points : 459
    Points
    459
    Par défaut
    Bonjour,

    Aprés réflection, j'ai trouvé une méthode qui pourrait faire dans ton contexte de développement. En voilà le cheminement.

    - Construire le shéma Xml (.xls) que tu souhaites obtenir. Si tu veux voir à quoi ressemble un fichier xls, tu peux en générer un en guise d'exemple, dans VS 2005, tu ouvres un fichier XML, onglet 'XML' -> 'Générer le Shéma'

    -Une fois ton shéma généré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                Dim oSqLAdapter As New Data.SqlClient.SqlDataAdapter("marequete...", "machainedeconnexion...")
                Dim oDataset As New Data.DataSet
                oSqLAdapter.fill(oDataset)
                oDataset.ReadXmlSchema("monshema.xls")
                oDataset.InferXmlSchema("monfichier.xml", Nothing)
    La fonction 'InferXmlSchema' généère un fichier XML a partir d'un Dataset avec un shéma donné.

    A toi de me dire ce que tu peux en tirer

    Bon courage

Discussions similaires

  1. Parser un fichier xml avec des tag names contenant ":" !
    Par sofien dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 26/11/2010, 10h40
  2. lire un fichier XML avec des noeuds, enfants, etc
    Par thor76160 dans le forum C#
    Réponses: 23
    Dernier message: 04/09/2009, 15h14
  3. fichiers XML avec des balises auto-fermantes
    Par processeur dans le forum Général Python
    Réponses: 0
    Dernier message: 15/08/2009, 19h14
  4. [CXF et JAXB] Parser un fichier XML avec des namespaces
    Par cowa dans le forum Services Web
    Réponses: 0
    Dernier message: 26/02/2009, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo