Bonjour à tous
je dois parser un fichier XML de commandes hébergé à distance.
je parviens facilement à parser les nodes parents et enfants mais pas les enfants des enfants.
voici la structure du xml:
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 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
| <?xml version="1.0" encoding="ISO-8859-1"?>
<statistics ip="90.32.88.139" timeGenerated="2011-11-15 09:53:39">
<commandes>
<commande>
<marketplace><![CDATA[RDC]]></marketplace>
<status><![CDATA[En attente]]></status>
<com_id><![CDATA[01]]></com_id>
<com_payement_date><![CDATA[15/11/2011]]></com_payement_date>
<com_purchase_date><![CDATA[15/11/2011]]></com_purchase_date>
<com_fact_societe><![CDATA[]]></com_fact_societe>
<com_fact_nom><![CDATA[Durand]]></com_fact_nom>
<com_fact_prenom><![CDATA[Gael]]></com_fact_prenom>
<com_fact_email><![CDATA[mail@mail.fr]]></com_fact_email>
<com_fact_adresse><![CDATA[Rue pas loin d'ici]]></com_fact_adresse>
<com_fact_cp><![CDATA[75003]]></com_fact_cp>
<com_fact_ville><![CDATA[Paris]]></com_fact_ville>
<com_fact_pays><![CDATA[France]]></com_fact_pays>
<com_fact_telephone_home><![CDATA[0102030405]]></com_fact_telephone_home>
<com_fact_telephone_office><![CDATA[]]></com_fact_telephone_office>
<liv_fact_societe><![CDATA[]]></liv_fact_societe>
<liv_fact_nom><![CDATA[Durand]]></liv_fact_nom>
<liv_fact_prenom><![CDATA[Gael]]></liv_fact_prenom>
<liv_fact_email><![CDATA[mail@mail.fr]]></liv_fact_email>
<liv_fact_adresse><![CDATA[Rue pas loin d'ici]]></liv_fact_adresse>
<liv_fact_adresse_2><![CDATA[]]></liv_fact_adresse_2>
<liv_fact_adresse_complement><![CDATA[]]></liv_fact_adresse_complement>
<liv_fact_cp><![CDATA[75003]]></liv_fact_cp>
<liv_fact_ville><![CDATA[Paris]]></liv_fact_ville>
<liv_fact_pays><![CDATA[France]]></liv_fact_pays>
<liv_fact_telephone_home><![CDATA[]]></liv_fact_telephone_home>
<liv_fact_telephone_office><![CDATA[]]></liv_fact_telephone_office>
<com_montant_commande><![CDATA[361.99]]></com_montant_commande>
<com_montant_tax><![CDATA[00]]></com_montant_tax>
<com_nb_article><![CDATA[2]]></com_nb_article>
<com_shipping><![CDATA[]]></com_shipping>
<com_shipping_description><![CDATA[Calberson]]></com_shipping_description>
<com_commentaires><![CDATA[]]></com_commentaires>
<com_commission><![CDATA[]]></com_commission>
<com_tracking_colis><![CDATA[]]></com_tracking_colis>
<com_ip><![CDATA[]]></com_ip>
<com_checkout_payment><![CDATA[]]></com_checkout_payment>
<com_type_payment><![CDATA[Carte]]></com_type_payment>
<com_type_livraison><![CDATA[]]></com_type_livraison>
<panier>
<nb_orders>2</nb_orders>
<produits>
<produit>
<id><![CDATA[1504]]></id>
<titre><![CDATA[Compresseur 100 l 3 cv]]></titre>
<category><![CDATA[]]></category>
<url_produit><![CDATA[Compresseur]]></url_produit>
<url_image><![CDATA[/images/3cv-01504a.jpg]]></url_image>
<sku><![CDATA[]]></sku>
<qt><![CDATA[1]]></qt>
<marque><![CDATA[]]></marque>
<ean><![CDATA[]]></ean>
<prix><![CDATA[359,99 ]]></prix>
</produit>
<produit>
<id><![CDATA[2458]]></id>
<titre><![CDATA[Bâche de protection multi usages]]></titre>
<category><![CDATA[]]></category>
<url_produit><![CDATA[Bâches]]></url_produit>
<url_image><![CDATA[http://images/2458.jpg]]></url_image>
<sku><![CDATA[]]></sku>
<qt><![CDATA[1]]></qt>
<marque><![CDATA[]]></marque>
<ean><![CDATA[]]></ean>
<prix><![CDATA[2,00]]></prix>
</produit>
</produits>
</panier>
</commande>
<commande>
<marketplace><![CDATA[RDC]]></marketplace>
<status><![CDATA[En attente]]></status>
<com_id><![CDATA[01]]></com_id>
<com_mrid><![CDATA[00]]></com_mrid>
<com_refid><![CDATA[02]]></com_refid>
<com_payement_date><![CDATA[15/11/2011]]></com_payement_date>
<com_purchase_date><![CDATA[15/11/2011]]></com_purchase_date>
<com_fact_societe><![CDATA[]]></com_fact_societe>
<com_fact_nom><![CDATA[Dupont]]></com_fact_nom>
<com_fact_prenom><![CDATA[Eric]]></com_fact_prenom>
<com_fact_email><![CDATA[mail@mail.fr]]></com_fact_email>
<com_fact_adresse><![CDATA[Rue par la bas]]></com_fact_adresse>
<com_fact_adresse_2><![CDATA[BP 753]]></com_fact_adresse_2>
<com_fact_adresse_complement><![CDATA[]]></com_fact_adresse_complement>
<com_fact_cp><![CDATA[75003]]></com_fact_cp>
<com_fact_ville><![CDATA[Paris cedex]]></com_fact_ville>
<com_fact_pays><![CDATA[France]]></com_fact_pays>
<com_fact_telephone_home><![CDATA[01090807]]></com_fact_telephone_home>
<com_fact_telephone_office><![CDATA[]]></com_fact_telephone_office>
<liv_fact_societe><![CDATA[]]></liv_fact_societe>
<liv_fact_nom><![CDATA[Dupont]]></liv_fact_nom>
<liv_fact_prenom><![CDATA[Eric]]></liv_fact_prenom>
<liv_fact_email><![CDATA[mail@mail.fr]]></liv_fact_email>
<liv_fact_adresse><![CDATA[Rue par la bas]]></liv_fact_adresse>
<liv_fact_adresse_2><![CDATA[BP 753]]></liv_fact_adresse_2>
<liv_fact_adresse_complement><![CDATA[]]></liv_fact_adresse_complement>
<liv_fact_cp><![CDATA[75003]]></liv_fact_cp>
<liv_fact_ville><![CDATA[Paris cedex]]></liv_fact_ville>
<liv_fact_pays><![CDATA[France]]></liv_fact_pays>
<liv_fact_telephone_home><![CDATA[]]></liv_fact_telephone_home>
<liv_fact_telephone_office><![CDATA[]]></liv_fact_telephone_office>
<com_montant_commande><![CDATA[78.99]]></com_montant_commande>
<com_montant_tax><![CDATA[00]]></com_montant_tax>
<com_nb_article><![CDATA[2]]></com_nb_article>
<com_shipping><![CDATA[]]></com_shipping>
<com_shipping_description><![CDATA[Colissimo]]></com_shipping_description>
<com_commentaires><![CDATA[]]></com_commentaires>
<com_commission><![CDATA[]]></com_commission>
<com_tracking_colis><![CDATA[]]></com_tracking_colis>
<com_ip><![CDATA[]]></com_ip>
<com_checkout_payment><![CDATA[]]></com_checkout_payment>
<com_type_payment><![CDATA[Carte]]></com_type_payment>
<com_type_livraison><![CDATA[]]></com_type_livraison>
<panier>
<nb_orders>2</nb_orders>
<produits>
<produit>
<id><![CDATA[1555]]></id>
<titre><![CDATA[Aspirateur à cendre inox]]></titre>
<category><![CDATA[]]></category>
<url_produit><![CDATA[Aspirateur ]]></url_produit>
<url_image><![CDATA[http://images/aspirateur-cendre-inox-1555.jpg]]></url_image>
<sku><![CDATA[]]></sku>
<qt><![CDATA[1]]></qt>
<marque><![CDATA[]]></marque>
<ean><![CDATA[]]></ean>
<prix><![CDATA[69,99]]></prix>
</produit>
<produit>
<id><![CDATA[4117]]></id>
<titre><![CDATA[Nappe anti tâche ronde motif Oloron bleu]]></titre>
<category><![CDATA[]]></category>
<url_produit><![CDATA[Nappe]]></url_produit>
<url_image><![CDATA[http://images/blank-1.gif]]></url_image>
<sku><![CDATA[]]></sku>
<qt><![CDATA[1]]></qt>
<marque><![CDATA[]]></marque>
<ean><![CDATA[]]></ean>
<prix><![CDATA[9,00]]></prix>
</produit>
</produits>
</panier>
</commande>
</commandes>
</statistics> |
Voici le code que j'ai fait
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 36 37 38 39 40
| objXML.Load CStr(fluxrss)
If objXML.parseError.errorCode <> 0 Then
Dim xPE
Set xPE = objXML.parseError ' obtient l'objet ParseError
With xPE
strErrText = "Votre document XML n'a pu être chargé en raison "
strErrText = strErrText & "de l'erreur suivante : <br>" & vbCrLf
strErrText = strErrText & "Error numéro : " & .errorCode
strErrText = strErrText & " : " & xPE.reason & vbCrLf
strErrText = strErrText & "<br>Ligne " & .Line & vbCrLf
strErrText = strErrText & "<br>Position ligne : " & .filepos & vbCrLf
strErrText = strErrText & "<br>Texte source : " & .srcText & vbCrLf
strErrText = strErrText & "<br>URL : " & .url
Response.Write strErrText
End With
else
Set Cmds = objXML.getElementsByTagName("commande")
NbCmds=Cmds.length
Set refer = objXML.getElementsByTagName("produit")
NbArticle=refer.length
For i = 0 to (NbCmds-1)
Nom=Cmds.item(i).childNodes.item(8).text
Response.write Nom&"<br>"
'For j = 0 to (NbArticle-1)
for each x in refer
Ref = refer.item(x).childNodes.item(0).childNodes.item(0).text
'Designation = refer.item(j).childNodes.item(0).childNodes.item(2).text
'Qte = refer.item(j).childNodes.item(0).childNodes.item(6).text
'Prix = refer.item(i).childNodes.item(0).childNodes.item(9).text
response.write Ref&" "&Designation&" "&Qte&" "&Prix&"€ <br>"
Next
Next
End If |
J'arrive bien à afficher les deux commandes mais le contenu du panier s'ajoute à chaque client

Je ne parvien pas à bien parser le tag <produit> pour chaque commande.
Merci pour votre aide