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

VB.NET Discussion :

[VB.NET] Comment charger un XML dans une table SQL via VB (ou C#)


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Par défaut [VB.NET] Comment charger un XML dans une table SQL via VB (ou C#)
    Bonjour,

    Comme le titre l'indique, je veux charger une table d'SQL Server à partir des données contenues dans un XML via un programme VB.NET ou C#.
    J'ai fait quelques recherches sur internet, mais je ne trouve pas vraiment comment faire (surtout pour la deuxième partie : le transfert à SQL ) sinon pour parser le fichier j'y suis arrivé.

    Merci pour votre aide.

  2. #2
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Il faudrait déjà que tu spécifies comment tu as rapatrié le XML... je suppose que c'est dans un datatable...
    Si c'est le cas, il te suffit de faire une boucle sur toutes les lignes de ton datatable et à chaque itération de faire une requête insert...

    Bref il faudrait que tu précises pour que l'on puisse mieux t'aider...

  3. #3
    Membre éclairé Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Par défaut
    Merci Sankassss,

    Avec Xpath, je récupère mes données, mais ça c'est un autre problème, je n'arrive pas à tout récuperer d'un seul coup , je veux dire les Values des Nodes. (avec une requête Xpath ".//" j'ai pas toutes les Nodes de tout les contextes) .Pour charger toutes les valeurs dans un DataTable je ne procède pas correctement apparemment et ta solution m'intéresse. m'enfin, c'est en fait cela que je cherche dans un premier temps.
    Si j'y arrive tu peux me rejoindre quelque part à la gare du Nord, et je te paierais un Durum au alentours! sinon des moulles-frittes?? c'est comme tu veux ! mais tout d'abord remplir la table par le XML

  4. #4
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Par défaut
    pour l'insert dans la BD comme l'a dit Sankasssss tu doit bouclé sur les données du XML et les transférer dans la BD. En fait tes deux problème sont intimement lie parceque pour récupérer les données tu est obliger de passer par XPath et ce sont les données récupère par Xpath qui serons insérer dans la BD donc tant que tu ne peut pas les récupérer en entier tu ne peut pas faire l'insert en entier sauf si tu enregistrer tout le fichier XML dans une colonne de type XML de la BD.

    @++
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  5. #5
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    [EDIT] je ne connais pas XPath, j'ai fait quelque recherche mais j'ai pas le temps de continuer la, je verrai ca demain [/EDIT]
    [REEDIT]J'ai cherché sur XPath et ca ne change rien au problème, tout dépend du shéma de ton XML...
    Post nous donc un exemple de XML à parser et un bout de code de ce que tu as déjà fait qu'on puisse t'aiguiller...[/REEDIT]

    pour la lecture du fichier XML, tout dépend de ca structure, si elle le permet, le moyen le plus simple est la méthode readXML du dataset.
    Voici un tuto qui en parle : http://selkis.developpez.com/tutoriels/dotnet/Xmlpart1/
    Une fois que tu sais parcourir ton fichier XML comme un tableau il n'est plus difficile de faire une boucle pour monter la BD.

    Les questions à ce poser sont donc :
    - est-ce que le shéma du fichier XML permet de faire la chose?
    - est-ce que tu as une table qui permet d'accueillir les données dans ta BD? Si non il faudra la créé dynamiquement (pas compliquer a faire...)

    Bref montre un exemple de shéma de ton XML...

    P.S. : Tu essayes de me soudoyer avec un durum, mmmmmmm tu me tentes là mais plutôt vers gare de l'ouest (moins loin après le boulot...)
    Non je rigole c'est toujours de bon cœur que l'on aide

  6. #6
    Membre éclairé Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Par défaut
    Bonjour,

    Voici mon fichier XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    <?xml version="1.0"?>
    <ASREQUEST_CIC_ASC>
      <AS_REQUEST>
    <ASREQUEST_INFO>
        <COMPANY>ABC123</COMPANY>
        <JOB_NO>111111</JOB_NO>
        <ASC_CODE>000001</ASC_CODE>
        <PRODUCT>
          <PRODUCTSHORT>
            <MODEL_CODE>AS-111</MODEL_CODE>
            <SERIAL_NO>A000B111</SERIAL_NO>
            <PURCHASE_DATE>19840413</PURCHASE_DATE>
          </PRODUCTSHORT>
          <SYMPTOM>
            <SYMPTOM1_DESC></SYMPTOM1_DESC>
            <SYMPTOM2_DESC></SYMPTOM2_DESC>
            <SYMPTOM3_DESC></SYMPTOM3_DESC>
          </SYMPTOM>
        </PRODUCT>
        <SERVICE>
          <SERVICE_TYPE></SERVICE_TYPE>
          <SERVICE_TYPE_DESC></SERVICE_TYPE_DESC>
        </SERVICE>
        <IN_OUT_WARRANTY></IN_OUT_WARRANTY>
        <REQUEST_DATE></REQUEST_DATE>
        <REQUEST_TIME></REQUEST_TIME>
        <REPAIR_ETD_DATE></REPAIR_ETD_DATE>
        <REPAIR_ETD_TIME></REPAIR_ETD_TIME>
        <TRACKING>
          <TR_STATUS></TR_STATUS>
          <TR_STATUS_DESC></TR_STATUS_DESC>
        </TRACKING>
        <TRREASON>
          <TR_REASON></TR_REASON>
          <TR_REASON_DESC></TR_REASON_DESC>
        </TRREASON>
        <INQUIRY_TEXT></INQUIRY_TEXT>
        <REF_NO></REF_NO>
    </ASREQUEST_INFO>
    <CONSUMER_INFO>
        <BP_NO>EMPTY</BP_NO>
        <CUSTNAME>
          <TITLE></TITLE>
          <FIRST_NAME></FIRST_NAME>
          <LAST_NAME></LAST_NAME>
        </CUSTNAME>
        <PHONE>
          <TEL_NUMBER1></TEL_NUMBER1>
          <TEL_NUMBER2></TEL_NUMBER2>
          <TEL_NUMBER3></TEL_NUMBER3>
          <FAX_NUMBER></FAX_NUMBER>
          <E_MAIL></E_MAIL>
        </PHONE>
        <ADDRESS>
          <ADDRESS_NUMBER></ADDRESS_NUMBER>
          <COUNTRY></COUNTRY>
          <REGION></REGION>
          <POST_CODE></POST_CODE>
          <CITY></CITY>
          <STREET></STREET>
          <HOUSE_NUMBER></HOUSE_NUMBER>
          <ROOM_NUMBER></ROOM_NUMBER>
          <FLOOR></FLOOR>
        </ADDRESS>
    </CONSUMER_INFO>
    <DEALER_INFO>
        <BP_NO>EMPTY</BP_NO>
        <CUSTNAME>
          <TITLE></TITLE>
          <FIRST_NAME></FIRST_NAME>
          <LAST_NAME></LAST_NAME>
        </CUSTNAME>
        <PHONE>
          <TEL_NUMBER1></TEL_NUMBER1>
          <TEL_NUMBER2></TEL_NUMBER2>
          <TEL_NUMBER3></TEL_NUMBER3>
          <FAX_NUMBER></FAX_NUMBER>
          <E_MAIL></E_MAIL>
        </PHONE>
        <ADDRESS>
          <ADDRESS_NUMBER></ADDRESS_NUMBER>
          <COUNTRY></COUNTRY>
          <REGION></REGION>
          <POST_CODE></POST_CODE>
          <CITY></CITY>
          <STREET></STREET>
          <HOUSE_NUMBER></HOUSE_NUMBER>
          <ROOM_NUMBER></ROOM_NUMBER>
          <FLOOR></FLOOR>
        </ADDRESS>
    </DEALER_INFO>
      </AS_REQUEST>
      <AS_REQUEST>
    <ASREQUEST_INFO>
        <COMPANY>EFG456</COMPANY>
        <JOB_NO>222222</JOB_NO>
        <ASC_CODE>000002</ASC_CODE>
        <PRODUCT>	
          <PRODUCTSHORT>
            <MODEL_CODE>AS-222</MODEL_CODE>
            <SERIAL_NO>A000B222</SERIAL_NO>
            <PURCHASE_DATE>19840414</PURCHASE_DATE>
          </PRODUCTSHORT>
          <SYMPTOM>
            <SYMPTOM1_DESC></SYMPTOM1_DESC>
            <SYMPTOM2_DESC></SYMPTOM2_DESC>
            <SYMPTOM3_DESC></SYMPTOM3_DESC>
          </SYMPTOM>
        </PRODUCT>
        <SERVICE>
          <SERVICE_TYPE></SERVICE_TYPE>
          <SERVICE_TYPE_DESC></SERVICE_TYPE_DESC>
        </SERVICE>
        <IN_OUT_WARRANTY></IN_OUT_WARRANTY>
        <REQUEST_DATE></REQUEST_DATE>
        <REQUEST_TIME></REQUEST_TIME>
        <REPAIR_ETD_DATE></REPAIR_ETD_DATE>
        <REPAIR_ETD_TIME></REPAIR_ETD_TIME>
        <TRACKING>
          <TR_STATUS></TR_STATUS>
          <TR_STATUS_DESC></TR_STATUS_DESC>
        </TRACKING>
        <TRREASON>
          <TR_REASON></TR_REASON>
          <TR_REASON_DESC></TR_REASON_DESC>
        </TRREASON>
        <INQUIRY_TEXT></INQUIRY_TEXT>
        <REF_NO></REF_NO>
    </ASREQUEST_INFO>
    <CONSUMER_INFO>
        <BP_NO>EMPTY</BP_NO>
        <CUSTNAME>
          <TITLE></TITLE>
          <FIRST_NAME></FIRST_NAME>
          <LAST_NAME></LAST_NAME>
        </CUSTNAME>
        <PHONE>
          <TEL_NUMBER1></TEL_NUMBER1>
          <TEL_NUMBER2></TEL_NUMBER2>
          <TEL_NUMBER3></TEL_NUMBER3>
          <FAX_NUMBER></FAX_NUMBER>
          <E_MAIL></E_MAIL>
        </PHONE>
        <ADDRESS>
          <ADDRESS_NUMBER></ADDRESS_NUMBER>
          <COUNTRY></COUNTRY>
          <REGION></REGION>
          <POST_CODE></POST_CODE>
          <CITY></CITY>
          <STREET></STREET>
          <HOUSE_NUMBER></HOUSE_NUMBER>
          <ROOM_NUMBER></ROOM_NUMBER>
          <FLOOR></FLOOR>
        </ADDRESS>
    </CONSUMER_INFO>
    <DEALER_INFO>
        <BP_NO>EMPTY</BP_NO>
        <CUSTNAME>
          <TITLE></TITLE>
          <FIRST_NAME></FIRST_NAME>
          <LAST_NAME></LAST_NAME>
        </CUSTNAME>
        <PHONE>
          <TEL_NUMBER1></TEL_NUMBER1>
          <TEL_NUMBER2></TEL_NUMBER2>
          <TEL_NUMBER3></TEL_NUMBER3>
          <FAX_NUMBER></FAX_NUMBER>
          <E_MAIL></E_MAIL>
        </PHONE>
        <ADDRESS>
          <ADDRESS_NUMBER></ADDRESS_NUMBER>
          <COUNTRY></COUNTRY>
          <REGION></REGION>
          <POST_CODE></POST_CODE>
          <CITY></CITY>
          <STREET></STREET>
          <HOUSE_NUMBER></HOUSE_NUMBER>
          <ROOM_NUMBER></ROOM_NUMBER>
          <FLOOR></FLOOR>
        </ADDRESS>
    </DEALER_INFO>
      </AS_REQUEST>
    </ASREQUEST_CIC_ASC>
    Donc voilà, je veux extraire les données et les mettre dans une table SQL (ses champs correspondent à ceux du fichier XML).

    Question shèma du fichier, je ne vois pas bien c'est quoi. sinon qu'est ce que ca veut dire quand ont trouve un certain <xsd : ...> dans du code XML ?

    J'ai en fait "tout" essayer pour charger le XML et le parser, j'ai essayé la classe XPathDocument, XMLDocument, XmlTextReader, XMLReadSetting, XMLDataDocument! toutes les classes du Framework quoi !!! mais tjrs sans le résultat voulu.

    Quelque chose qui donne comme résultat (l'apparence) qui ressemble un petit peu à ce que je cherche est la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            Dim xmlDatadoc As New XmlDataDocument()
            xmlDatadoc.DataSet.ReadXml("C:\test_1.xml")
            Dim ds As New DataSet("ds_test")
            ds = xmlDatadoc.DataSet
            frmXmlTest.DataGridView1.DataSource = ds.DefaultViewManager
            frmXmlTest.DataGridView1.DataMember = "ASREQUEST_INFO"
            frmXmlTest.Show()
    Le problème c'est que je dois spécifier à chaque fois le Node parent pour récupérer les infos de l'arborescente

    Merci

    @sankasssss : baah non que je veux pas de soudoyer avec un durum ! C'est de l'humouuur ! sinon si t alérgique au nord je t'ofrirais ton bon durum bien chaud au congres si c ca ta gare de l'ouest ! m'enfin, je rigole aussi (cela n'empêche pas de le faire réélement tu sais )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. inserer un document xml dans une table sql
    Par wafabrj dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/05/2012, 12h20
  2. [Débutant] [VB.NET] envoi de la date dans une requete SQL via ADO.NET
    Par yassine-art dans le forum ADO.NET
    Réponses: 2
    Dernier message: 28/04/2012, 13h08
  3. Réponses: 0
    Dernier message: 17/11/2011, 08h44
  4. Réponses: 5
    Dernier message: 24/11/2010, 14h54
  5. Charger Fichiers XML dans une table avec SQL*LOADER
    Par devdev2003 dans le forum SQL
    Réponses: 2
    Dernier message: 14/01/2008, 10h40

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