2013-04-15 79 views
0

我试图用谷歌地图API定义2点之间的驾驶距离。它返回一个我加载到XMLDOM对象中的XML。然而,我似乎无法找到任何地方,我可以如何获得儿童内儿童的价值......我已阅读微软教程,但并未显示如何从XML中检索值。经典的ASP读取XML值

一个例子XML是:

<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> 

我的代码的部分是:

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  

我想要得到的“价值”的“距离”,但我不觉得是公正尽管尝试过一切

+0

您是否已经尝试过“分步”方法?为什么不把响应存储到变量中? – reporter

回答

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

或类似成功 - 与玩耍他XPath

+0

添加 “xmlLongLat.setProperty ”SelectionLanguage“, ”的XPath“ \t集节点= xmlLongLat.selectSingleNode(”/ DistanceMatrixResponse的/行/元件/距离/值 “) \t dblDrivingDistance = NZ(node.text,0)” 之后loadXML在最后一行返回一个“Object required:'node'”错误。看起来像XML永远不会加载或什么 –

+0

我试图查询谷歌地图驾驶距离api,但它似乎我已经使用了我所有的日常查询,这就是为什么它没有工作。应该是“node = xmlDoc.selectSingleNode(”/ DistanceMatrixResponse/row/elelemnt/distance/value“)。text”to be correct –