Retrieve values from XML response to Google Maps

Dale Fye
Dale Fye used Ask the Experts™
on
I'm pulling data from the Google Map API and it returns an XML response which looks like:
<DistanceMatrixResponse>
 <status>OK</status>
 <origin_address>Grafton, VA 23692, USA</origin_address>
 <destination_address>Yorktown, VA 23690, USA</destination_address>
 <row>
  <element>
   <status>OK</status>
   <duration>
    <value>556</value>
    <text>9 mins</text>
   </duration>
   <distance>
    <value>9779</value>
    <text>9.8 km</text>
   </distance>
  </element>
 </row>
</DistanceMatrixResponse>

Open in new window

I would like to extract the duration/text and distance/text values from this XML but the code found is using is not returning those values
    Dim domResponse As DOMDocument60
    Set domResponse = New DOMDocument60
    domResponse.loadXML objXMLHTTP.responseText
    
    Dim ixnStatus As Variant
    Set ixnStatus = domResponse.selectSingleNode("//status")
    
    If ixnStatus.Text = "OK" Then
        Dim ixnDistance, ixnDuration
        Set ixnDistance = domResponse.selectSingleNode("/DistanceMatrixResponse/row/element/distance/text")
Debug.Print ixnDistance
        Set ixnDuration = domResponse.selectSingleNode("/DistanceMatrixResponse/row/element/duration/text")
Debug.Print ixnDuration
    End If

Open in new window

and actually raises an error (#438          Object doesn't support this property or method) on line 11
I'm sure this is just a matter of getting the "SelectSingleNode" argument correct, but I have played with just about every combination of nodes names and cannot get this right.
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Owner, Dev-Soln LLC
Most Valuable Expert 2014
Top Expert 2010
Commented:
after playing with this for 45 minutes, I posted my question, then stumbled on the proper syntax.

Lines 11 and 13 should have read:

Debug.Print ixnDistance.Text
Debug.Print ixnDuration.Text
I believe, the exception raised, because you trying to print out an object, not a string in
Debug.Print ixnDistance
try this instead:
if ixnDistance is Nothing then
   Debug.Print "No distance node!"
else
   Debug.Print ixnDistance.text
end if

Open in new window

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial