2013-04-15 3 views
0

Я пытаюсь определить расстояние между двумя точками, используя карты google api. Он возвращает XML, который я загружаю в объект XMLDOM. Однако я не могу найти нигде, как я могу получить значение дочернего элемента в дочернем элементе дочернего элемента ... Я прочитал учебник Microsoft, но не показывает, как вернуть значения из 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 

или аналогичный - играть с т he XPath

+0

Добавление "xmlLongLat.setProperty "SelectionLanguage", "XPath" \t Установить узел = xmlLongLat.selectSingleNode ("/DistanceMatrixResponse/строка/элемент/расстояние/значение ") \t dblDrivingDistance = Nz (node.text, 0)" после того, как loadXML возвращает сообщение об ошибке «Требуемый объект:« узел »в последней строке. похоже, что XML никогда не был загружен или что-то –

+0

Я пытался запросить карты google на расстоянии api, но, похоже, я использовал все свои ежедневные запросы, поэтому он не работал. Должен быть «node = xmlDoc.selectSingleNode («/DistanceMatrixResponse/row/elelemnt/distance/value »). Текст« правильно » –

Смежные вопросы