Bonjour à tous,
Voici mon prob, je dois importer des fichiers XML (qui ont le même structure) dans une base de donnée access, et sin possible dans une même table.
J'ai trouvé ce bout de code sur le forum qui me permet d'importer un fichier XML "simple" dans une table access :
Je dis simple car la structure du fichier est :
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 Public Sub ImportXML() Dim doc As MSXML2.DOMDocument Dim parent As MSXML2.IXMLDOMElement Dim fils As MSXML2.IXMLDOMNode Dim dt As DAO.Recordset Set dt = CurrentDb.OpenRecordset("tmpimport") Set doc = New MSXML2.DOMDocument doc.async = False doc.Load ("p:\document\desktop\XML\test.xml") ' Recherche des noeuds IDENT For Each parent In doc.getElementsByTagName("commande") dt.AddNew ' parcourir noeud fils du parent For Each fils In parent.childNodes ' attribut = nom du champs dt.Fields(fils.nodeName) = fils.Text Next dt.Update Next Set doc = Nothing dt.Close Set dt = Nothing End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <commandes> <numCommande>1297</numCommande> <numCompteClient>5.85595</numCompteClient> <raisonSociale>SOCIETE FINANCIERE DE TERRASSEME</raisonSociale> <SIREN>398172296</SIREN> </commandes>
Mais dès que la structure est plus complexe, le code ne fonctionne plus, et je n'ai aucune idée de comment le modifier.
Par exemple pour un fichier XML ayant 5 ou 6 enfants :
Merci d'avance pour votre aide, j'espère avoir été assez précis.
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 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="20071214_commandeRetour_v1_0.xsl"?> <commandes> <societes> <societe> <IdSociete erreur=""> <numCommande>1297</numCommande> <numCompteClient>5.85595</numCompteClient> <raisonSociale>SOCIETE FINANCIERE DE TERRASSEME</raisonSociale> <SIREN>398172296</SIREN> </IdSociete> <sites> <site erreur=""> <SIRET>39817229600020</SIRET> <raisonSociale>SOCIETE FINANCIERE DE TERRASSEME</raisonSociale> <siteGestFlotte erreur=""> <nom>RODRIGUEZ</nom> <prenom>FOUZIA</prenom> <mail>claude.remetter@sofiter.fr</mail> <tel>0490474748</tel> <mobile></mobile> <fax>0490471736</fax> </siteGestFlotte> <infratel erreur=""> <PABX erreur=""> <marque></marque> <model></model> </PABX> </site> </sites> </societe> </societes> </commandes>
Partager