2013-04-15 3 views
0

J'essaie de définir la distance de conduite entre 2 points en utilisant l'API google maps. Il retourne un XML que je charge dans un objet XMLDOM. Cependant, je n'arrive pas à trouver comment je peux obtenir la valeur d'un enfant dans un enfant au sein d'un enfant ... J'ai lu le tutoriel de Microsoft mais il ne montre pas comment récupérer les valeurs du XML.ASP classique lecture des valeurs XML

Un XML exemple:

<DistanceMatrixResponse> 
<status>OK</status> 
<origin_address>Gentsesteenweg 5, 9200 Dendermonde, België</origin_address> 
<destination_address>Veerstraat 39, 9200 Dendermonde, België</destination_address> 
<row> 
    <element> 
     <status>OK</status> 
     <duration> 
      <value>117</value> 
      <text>2 min.</text> 
     </duration> 
     <distance> 
      <value>1061</value> 
      <text>1,1 km</text> 
     </distance> 
    </element> 
</row> 
</DistanceMatrixResponse> 

La partie de mon code est:

Set XmlObj = Server.CreateObject("Microsoft.XMLHTTP") 
strURL = "http://maps.googleapis.com/maps/api/distancematrix/xml?origins=" & dblFromLatitude & "+" & dblFromLongitude & "&destinations=" & dblToLatitude & "+" & dblToLongitude & "&mode=driving&language=" & strLanguage & "&sensor=false" 
'DebugFile strURL 
XmlObj.Open "POST", strURL, false 
XmlObj.send  
strResponse = XmlObj.responseText 
Set XmlObj = Nothing 


Set xmlLongLat = Server.CreateObject("Microsoft.XMLDOM") 
xmlLongLat.async=false 
xmlLongLat.loadXML(strResponse) 

If Not xmlLongLat.GetElementsByTagName("DistanceMatrixResponse")(0).ChildNodes(0).GetElementsByTagName("row")(0).ChildNodes(0).GetElementsByTagName("element")(0).ChildNodes(0).GetElementsByTagName("distance")(0).ChildNodes(0) Is Nothing Then 

    dblDrivingDistance = Round(CDbl(Nz(xxmlLongLat.GetElementsByTagName("DistanceMatrixResponse")(0).ChildNodes(0).GetElementsByTagName("row")(0).ChildNodes(0).GetElementsByTagName("element")(0).ChildNodes(0).GetElementsByTagName("distance")(0).ChildNodes(0).NodeValue, 0))/1000,2) 
Else 'xmlLongLat.GetElementsByTagName("element")(0) Is Nothing Then 
    dblDrivingDistance = 0 
    DebugFile "fgfzefzef" 
End If 'xmlLongLat.GetElementsByTagName("element")(0) Is Nothing Then 

Set xmlLongLat = Nothing  

Je veux obtenir la "valeur" de la "distance", mais je ne tout simplement pas semblent réussir malgré avoir essayé de tout

+0

Avez-vous déjà essayé la méthode «étape par étape»? Pourquoi ne stockez-vous pas la réponse dans une variable? – reporter

Répondre

0
xmlDoc.setProperty "SelectionLanguage", "XPath" 
node = xmlDoc.selectSingleNode("/row/elelemnt/distance/value").innerText 

ou similaire - jouer avec t e XPath

+0

Ajout "xmlLongLat.setProperty "SelectionLanguage", "XPath" \t Set noeud = xmlLongLat.selectSingleNode ("/DistanceMatrixResponse/ligne/élément/à distance/value ") \t dblDrivingDistance = Nz (node.text, 0)" après loadXML renvoie une erreur "Object required: 'node'" sur la dernière ligne. On dirait que le XML n'est jamais chargé ou quelque chose comme ça –

+0

J'essayais d'interroger l'API de Google Maps, mais il semble que j'avais utilisé toutes mes requêtes quotidiennes, ce qui explique pourquoi cela n'a pas fonctionné. Doit être "node = xmlDoc.selectSingleNode ("/DistanceMatrixResponse/row/elelemnt/distance/valeur "). Text" pour être correct –