Import XML structure complexe
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 :
Code:
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 |
Je dis simple car la structure du fichier est :
Code:
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 :
Code:
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> |
Merci d'avance pour votre aide, j'espère avoir été assez précis.