Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/11/2011, 07h16   #1
Invité de passage
 
Inscription : avril 2009
Messages : 2
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 2
Points : 0
Points : 0
Par défaut Parsing Xml ASP

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&"&euro; <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
Alf-Tahiti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 16h09   #2
Modérateur
 
Avatar de roro06
 
Inscription : avril 2007
Messages : 1 363
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : avril 2007
Messages : 1 363
Points : 1 545
Points : 1 545
Bonjour

La methode getElementsByTagName retourne TOUS les noeuds enfants de l'objet considéré. Le fonctionnement observé est donc le fonctionnement normal.

Pour parser les produits commande par commande, il ne faut pas parser sur objXML, mais sur chacun des noeuds Cmds.
__________________


" La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
(J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

Chuck Norris comprend JC Van Damme.
roro06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h34.


 
 
 
 
Partenaires

Hébergement Web