Jump to content

Google Maps API & XML post and answer handle


Recommended Posts

Hello!,

im trying to work abit with googles map api.

Hers the standard code

#include <File.au3>

Global $oXML = ObjCreate("Microsoft.XMLHTTP")
$oXML.Open("GET", "http://maps.google.com/maps/api/directions/xml?origin=48143,Muenster&destination=23560,Luebeck&sensor=false", 0)
$oXML.Send

Global $sFile = "test.xml"
FileWrite($sFile, $oXML.responseText)

in the test file are the complete xml answer.

but i just want / or need one value

at the end of the file is the point "distance" / text = (distance in kilometers) (AT LINE 589)

so the value i search is "341 km" but the value can change depending on the adress i put in the post.

so how i can get only this value from the hole xml answer? or how i can seperate this value?

sorry for my bad english

Edited by Vision
Link to comment
Share on other sites

How about you read the file into an array - _FileReadToArray

display it, to make the next steps easier to code:

Then find all the occurrences of "<distance>" using _ArrayFindAll

Take the LAST of these [using the value returned] and look in the original array for the value of the element 2 entries below it.

William

Link to comment
Share on other sites

im getting allways 0 / -1 back

#include <File.au3>
#include <Array.au3>
Global $aRecords
Global $aiResult

Global $oXML = ObjCreate("Microsoft.XMLHTTP")
$oXML.Open("GET", "http://maps.google.com/maps/api/directions/xml?origin=48143,Muenster&destination=23560,Luebeck&sensor=false", 0)
$oXML.Send

Global $sFile = "test.xml"
FileWrite($sFile, $oXML.responseText)


_FileReadToArray("test.xml",$filetoarray)

$result = _ArrayFindAll($filetoarray, "<text>")

Msgbox(0,'Results:', $result)
MsgBox(0,"Error", @error)

the array in $filetoarray is ok

but arrayfindall doesnt work?!

Edited by Vision
Link to comment
Share on other sites

OK, that gave an error that $filetoarray isn't an array, which I don't understand.

But I've found another way:

#include <File.au3>
#include <Array.au3>
Global $aRecords
Global $aiResult, $filetoarray, $handle, $XML, $newtext

Global $oXML = ObjCreate("Microsoft.XMLHTTP")
$oXML.Open("GET", "http://maps.google.com/maps/api/directions/xml?origin=48143,Muenster&destination=23560,Luebeck&sensor=false", 0)
$oXML.Send

$XML = $oXML.responseText


$array = StringSplit ($XML,"</distance>",1) ; splits at every instance of /distance

$array2 = stringsplit ($array[$array[0]-1], "<text>", 1) ; selects the last split segment, which contains the total distance, and splits it down by text occurrences

;_ArrayDisplay ($array2) ; just to demo

$Distance = StringTrimRight($array2[$array2[0]],11) ; picks last instance and trims the end tags.


Msgbox(0,'Results:', $distance)

thia works on the example you gave, but you'd have to test i for reliability with other values etc.

William

Link to comment
Share on other sites

I'm no xml expert, infact I've never even used it/them.

But I have seen an xml dom wrapper in example scripts, and I think xml is similar to html but has nodes and suchlike. I'm probably talking gibberish but I'll bet there is a function in that UDF for exactly what you want.

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...