Champak Posted December 30, 2014 Posted December 30, 2014 (edited) I'm trying to relearn the XML udf and etrieve information from: "http://dev.virtualearth.net/REST/v1/Traffic/Incidents/40.65,-73.55,40.95,-73.95?&output=xml&key=AkjlIWX4DBF05t0H8vfLeT5XbDQCc1h4jcQ8FSnmamKqDna_Nq-VJNp9ZNCIThzw" My issue is...I believe..is I don't have any names or ID in the result. How can I retrieve the information and plug them into an array? I even keep getting errors when I simply try to get a node count, so I'm lost.$Xml = _XMLFileOpen("http://dev.virtualearth.net/REST/v1/Traffic/Incidents/40.65,-73.55,40.95,-73.95?&output=xml&key=AkjlIWX4DBF05t0H8vfLeT5XbDQCc1h4jcQ8FSnmamKqDna_Nq-VJNp9ZNCIThzw") $count = _XMLGetNodeCount ("//Resources/*")Thanks. Edited December 30, 2014 by Champak
jdelaney Posted December 30, 2014 Posted December 30, 2014 (edited) Your html source is not a file. You have to grab the xml, and then throw it into a file to use...or, there is another method to load strings into the xml object...you will still need to grab the source first: $oXML = ObjCreate("Microsoft.XMLDOM") $oXML.loadxml($string) Edited December 30, 2014 by jdelaney IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.
Champak Posted December 30, 2014 Author Posted December 30, 2014 I did notice that every example was from a local file, but I was unsuccessful in saving the page as a XML file. I used all the IERead functions and filewrite, so I gave up on that. Then I came across an example here where someone was reading it directly from the web page and their example was working with no problem just like how I have it above and I tried it and it worked (when I get home I'll find it and post it, because I can't find it now.). So since theirs worked, I'm wondering why mine won't. I'll look back at grabbing it and saving it as well.
jdelaney Posted December 30, 2014 Posted December 30, 2014 I never navigated to the page, but if it only includes your xml, this would probably work (add in your proper ie object): $oXML = ObjCreate("Microsoft.XMLDOM") $oXML.loadxml(_IEBodyReadHTML($oIE)) ConsoleWrite($oXML.xml & @CRLF) If it's pure xml, then you will have the full output of the xml in the consolewrite. IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.
ViciousXUSMC Posted December 30, 2014 Posted December 30, 2014 I was just about to ask about how to edit a string/line in an xlm config file. I have not seen or heard about the XML UDF so before I go post a thread, mind sharing a bit more info on that as it may have the answers I need.
jdelaney Posted December 30, 2014 Posted December 30, 2014 Do a forum search for xmldom, you will have pleanty of examples of reading, querying, updating, saving. IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.
Champak Posted December 31, 2014 Author Posted December 31, 2014 (edited) ;_SetDebug (True);show debug messages via console write #include <_XMLDomWrapper.au3> #include <Inet.au3> #include <Array.au3> ;#RequireAdmin $Xml = "" $Xml = _XMLFileOpen("http://world.needforspeed.com/SpeedAPI/ws/game/nfsw/driver/NFSDREW/cars?shard=Apex") ;$Xml = _XMLFileOpen(http://dev.virtualearth.net/REST/v1/Traffic/Incidents/40.65,-73.55,40.95,-73.95?&output=xml&key=DELETED) $count = _XMLGetNodeCount ("//worldCar/*") ;$count = _XMLGetNodeCount ("//Resource/*") MsgBox(0,0,$count) Dim $aAttrName[1], $aAttrValue[1], $node for $x= 1 to $count $node = _XMLGetAllAttrib ("/list/*["&$x-1&"]",$aAttrName,$aAttrValue ) $node1 = _XMLGetAllAttrib ("/list/*["&$x-1&"]/*",$aAttrName,$aAttrValue ) _ArrayDisplay($node," worldCar Value") _ArrayDisplay($node1," physicsProfile Value") ;_ArrayDisplay($aAttrName,"Attrib Names") ;_ArrayDisplay($aAttrValue,"Attrib Value") $node = _XMLGetAttrib("/list/*["&$x-1&"]/*","name",'[@id='&$x&']') MsgBox(0,"Name Where Id="&$x,$node) if @error then ExitLoop Next Exit Here's the example I mentioned. It is being read directly from the website and it works with no issue. Now with the page I'm trying to access, I can't get anything out of it except a node count (when converting it to a string first) when I do _XMLGetNodeCount("//*"). As far as the IE function to use, its actually _IEDocReadHTML which spits out actual HTML tags. I guess I could use that in order to cycle through this and get the info I need with stringbetween, but this thing seemed cleaner and faster. Edited November 18, 2015 by Champak
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now