jswilcox1980 Posted December 11, 2019 Share Posted December 11, 2019 OK I have created a small utility that will display the file versions of the software my customers are using. This information is displayed in a MSGBOX and saved into a Text file on the desktop. I would like to capture the Dongle Number From the XML document, display it in my MSGBOX and save it to the text file also. I have looked at about every xml read post there is and i am seriously missing something. <?xml version="1.0" encoding="UTF-8"?> -<TServerConfig version="1"> -<Object type="TServerConfig" name="MainObject"> <!-- URL of remote web service. Leave undefined for production deployment --> <!-- Port that the server listnes on --> <Property name="ServerPort" value="27027"/> <!-- Server IP, leave empty for autodetect --> <Property name="ServerIP" value=""/> <!-- Write more events to the log file --> <Property name="ExtendedLogging" value="False"/> </Object> -<Dongles> <Dongle Order="0" Number="0123456789"/> <Dongle Order="1" Number="1122334455"/> </Dongles> </TServerConfig> This is my code for the small utility that works , i would like to build in the Dongle numbers that could be extracted from the XML. expandcollapse popup#include <MsgBoxConstants.au3> #include<file.au3> FileVersions() Func FileVersions() ; Retrieve the file versions of specified 3shape application files $DSver = FileGetVersion("C:\Program Files\3Shape\DentalManager\Dentalmanager.exe") $DSSver = FileGetVersion("C:\Program Files (x86)\3Shape\Dongle Server Service\DongleServer.exe") $ScnSvr = FileGetVersion("C:\Program Files\3Shape\Scansuite\Scanserver.exe") $SID = FileGetVersion("C:\Program Files\3Shape\ScanitDental\DentalDesktop.exe") $AppDsgnr = FileGetVersion("C:\Program Files\3Shape\ApplianceDesigner\ApplianceDesigner.exe") $Splintdsgnr = FileGetVersion("C:\Program Files\3Shape\SplintDesigner Splint\ApplianceDesigner.exe") $Versiontextfile = (@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt') ;Clears file from previous contents $hFile = FileOpen($Versiontextfile, 2) FileClose($hFile) ; Display the file version. This should be equal to @AutoItVersion. MsgBox($MB_SYSTEMMODAL,'3Shape Software Versions', 'Dental System: ' & $DSver &@CRLF& 'Dongle Server Service: '& $DSSver & @CRLF & 'ScanSuite: '& $ScnSvr & @CRLF & 'ScanitDental: '& $SID & @CRLF & 'Appliance Designer: '& $AppDsgnr& @CRLF & 'Splint Designer: '& $SplintDsgnr) MsgBox($MB_SYSTEMMODAL,'3Shape Software Versions', ' A summary has been saved on the desktop: ' & @CRLF & @CRLF& '" ' & @computername & ' 3shape Dental System File Versions.txt "') ;Below writes all data to text file on desktop FileWriteLine(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt',"") FileWriteLine(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt',"") FileWriteLine(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt','***** 3SHAPE DENTAL SYSTEM FILE VERSIONS *****') FileWriteLine(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt',"") FileWriteLine(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt',"") FileWriteline(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt','Dental System - '& $DSver) FileWriteline(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt','Dongle Server Service - '& $DSSver) FileWriteline(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt','ScanSuite - '& $ScnSvr) FileWriteline(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt','Scanit Dental - '& $SID) FileWriteline(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt','Appliance Designer - '& $AppDsgnr) FileWriteline(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt','Splint Designer - '& $SplintDsgnr) Run("notepad.exe " & $Versiontextfile, @WindowsDir, @SW_MAXIMIZE) EndFunc Link to comment Share on other sites More sharing options...
Nine Posted December 11, 2019 Share Posted December 11, 2019 #include <Constants.au3> #include <Array.au3> Opt ("MustDeclareVars", 1) Local $aNumber = StringRegExp (FileRead ("File.xml"),'Dongle Order="\d+" Number="(\d+)',$STR_REGEXPARRAYGLOBALMATCH) _ArrayDisplay ($aNumber) Try this... “They did not know it was impossible, so they did it” ― Mark Twain Spoiler Block all input without UAC Save/Retrieve Images to/from Text Monitor Management (VCP commands) Tool to search in text (au3) files Date Range Picker Virtual Desktop Manager Sudoku Game 2020 Overlapped Named Pipe IPC HotString 2.0 - Hot keys with string x64 Bitwise Operations Multi-keyboards HotKeySet Recursive Array Display Fast and simple WCD IPC Multiple Folders Selector Printer Manager GIF Animation (cached) Screen Scraping Multi-Threading Made Easy Link to comment Share on other sites More sharing options...
TheXman Posted December 11, 2019 Share Posted December 11, 2019 (edited) Or if you want to play with the XML UDF, you can do something like this: expandcollapse popup#include <Constants.au3> #include <Array.au3> #include <MyIncludes\XML\xml.au3> ; <== Change to your location Const $gsXmlData = _ '<?xml version="1.0" encoding="UTF-8"?>' & @CRLF & _ '<TServerConfig version="1">' & @CRLF & _ ' <Object type="TServerConfig" name="MainObject">' & @CRLF & _ ' <!-- URL of remote web service. Leave undefined for production deployment -->' & @CRLF & _ ' <!-- Port that the server listnes on -->' & @CRLF & _ ' <Property name="ServerPort" value="27027"/>' & @CRLF & _ ' <!-- Server IP, leave empty for autodetect -->' & @CRLF & _ ' <Property name="ServerIP" value=""/>' & @CRLF & _ ' <!-- Write more events to the log file -->' & @CRLF & _ ' <Property name="ExtendedLogging" value="False"/>' & @CRLF & _ ' </Object>' & @CRLF & _ ' <Dongles>' & @CRLF & _ ' <Dongle Order="0" Number="0123456789"/>' & @CRLF & _ ' <Dongle Order="1" Number="1122334455"/>' & @CRLF & _ ' </Dongles>' & @CRLF & _ '</TServerConfig>' & @CRLF show_dongle_numbers($gsXmlData) Func show_dongle_numbers($sXML) Local $oXml Local $aResult $oXml = _XML_CreateDOMDocument() $oXml = _XML_LoadXml($oXml, $sXML) If @error Then Exit MsgBox($MB_ICONERROR, "ERROR", "_XML_LoadXml failed with @error = " & @error) $aResult = _XML_GetValue($oXml, "//Dongle/@Number") If @error Then Exit MsgBox($MB_ICONERROR, "ERROR", "_XML_GetValue failed with @error = " & @error) _ArrayDisplay($aResult, "Dongle Numbers") EndFunc Edited December 11, 2019 by TheXman CryptoNG UDF: Cryptography API: Next Gen jq UDF: Powerful and Flexible JSON Processor | jqPlayground: An Interactive JSON Processor Xml2Json UDF: Transform XML to JSON | HttpApi UDF: HTTP Server API | Roku Remote: Example Script About Me How To Ask Good Questions On Technical And Scientific Forums (Detailed) | How to Ask Good Technical Questions (Brief) "Any fool can know. The point is to understand." -Albert Einstein "If you think you're a big fish, it's probably because you only swim in small ponds." ~TheXman Link to comment Share on other sites More sharing options...
jswilcox1980 Posted December 11, 2019 Author Share Posted December 11, 2019 1 hour ago, Nine said: #include <Constants.au3> #include <Array.au3> Opt ("MustDeclareVars", 1) Local $aNumber = StringRegExp (FileRead ("File.xml"),'Dongle Order="\d+" Number="(\d+)',$STR_REGEXPARRAYGLOBALMATCH) _ArrayDisplay ($aNumber) Try this... Nine, I like this approach but i am unable to get to display the dongle number listed when i place the $anumber variable into my msgbox display code it returns a "1" only? How do i get it to display the 10 digit dongle number? 38 minutes ago, TheXman said: Or if you want to play with the XML UDF, you can do something like this: expandcollapse popup#include <Constants.au3> #include <Array.au3> #include <MyIncludes\XML\xml.au3> ; <== Change to your location Const $gsXmlData = _ '<?xml version="1.0" encoding="UTF-8"?>' & @CRLF & _ '<TServerConfig version="1">' & @CRLF & _ ' <Object type="TServerConfig" name="MainObject">' & @CRLF & _ ' <!-- URL of remote web service. Leave undefined for production deployment -->' & @CRLF & _ ' <!-- Port that the server listnes on -->' & @CRLF & _ ' <Property name="ServerPort" value="27027"/>' & @CRLF & _ ' <!-- Server IP, leave empty for autodetect -->' & @CRLF & _ ' <Property name="ServerIP" value=""/>' & @CRLF & _ ' <!-- Write more events to the log file -->' & @CRLF & _ ' <Property name="ExtendedLogging" value="False"/>' & @CRLF & _ ' </Object>' & @CRLF & _ ' <Dongles>' & @CRLF & _ ' <Dongle Order="0" Number="0123456789"/>' & @CRLF & _ ' <Dongle Order="1" Number="1122334455"/>' & @CRLF & _ ' </Dongles>' & @CRLF & _ '</TServerConfig>' & @CRLF show_dongle_numbers($gsXmlData) Func show_dongle_numbers($sXML) Local $oXml Local $aResult $oXml = _XML_CreateDOMDocument() $oXml = _XML_LoadXml($oXml, $sXML) If @error Then Exit MsgBox($MB_ICONERROR, "ERROR", "_XML_LoadXml failed with @error = " & @error) $aResult = _XML_GetValue($oXml, "//Dongle/@Number") If @error Then Exit MsgBox($MB_ICONERROR, "ERROR", "_XML_GetValue failed with @error = " & @error) _ArrayDisplay($aResult, "Dongle Numbers") EndFunc TheXman, I am not sure about the XML portion of this code above, is this specified for structure only or as the source of the code to work? I was unclear what i state on the original post. The dongle numbers will be different on each PC this script will be ran on. Link to comment Share on other sites More sharing options...
TheXman Posted December 11, 2019 Share Posted December 11, 2019 (edited) 11 minutes ago, jswilcox1980 said: TheXman, I am not sure about the XML portion of this code above, is this specified for structure only or as the source of the code to work? I was unclear what i state on the original post. The dongle numbers will be different on each PC this script will be ran on. The example that I provided was merely a guide. It was provided to show you how to pull just the values of the number attribute from the Dongle tags. Obviously you aren't going to use a constant. You would need to add the additional code to load your specific XML file. Edited December 11, 2019 by TheXman CryptoNG UDF: Cryptography API: Next Gen jq UDF: Powerful and Flexible JSON Processor | jqPlayground: An Interactive JSON Processor Xml2Json UDF: Transform XML to JSON | HttpApi UDF: HTTP Server API | Roku Remote: Example Script About Me How To Ask Good Questions On Technical And Scientific Forums (Detailed) | How to Ask Good Technical Questions (Brief) "Any fool can know. The point is to understand." -Albert Einstein "If you think you're a big fish, it's probably because you only swim in small ponds." ~TheXman Link to comment Share on other sites More sharing options...
Nine Posted December 11, 2019 Share Posted December 11, 2019 43 minutes ago, jswilcox1980 said: Nine, I like this approach but i am unable to get to display the dongle number listed when i place the $anumber variable into my msgbox display code it returns a "1" only? How do i get it to display the 10 digit dongle number? It is an array. So you need to provide the index of the var. Like MsgBox (0,"",$aNumber[0] & "/" & $aNumber[1]) “They did not know it was impossible, so they did it” ― Mark Twain Spoiler Block all input without UAC Save/Retrieve Images to/from Text Monitor Management (VCP commands) Tool to search in text (au3) files Date Range Picker Virtual Desktop Manager Sudoku Game 2020 Overlapped Named Pipe IPC HotString 2.0 - Hot keys with string x64 Bitwise Operations Multi-keyboards HotKeySet Recursive Array Display Fast and simple WCD IPC Multiple Folders Selector Printer Manager GIF Animation (cached) Screen Scraping Multi-Threading Made Easy Link to comment Share on other sites More sharing options...
jswilcox1980 Posted December 12, 2019 Author Share Posted December 12, 2019 3 hours ago, Nine said: It is an array. So you need to provide the index of the var. Like MsgBox (0,"",$aNumber[0] & "/" & $aNumber[1]) certainly not looking for anyone to code this for me but i just dont get it. obviously i am trying to do something beyond my knowledge level. I am a visual learner so if i can see a working example i can understand what its doing and why. I have tried adding your code and sort of understand what your saying but i dont know how to "provide the index" of the variable. I Appreciate all of the help you both have given thus far. Link to comment Share on other sites More sharing options...
TheXman Posted December 12, 2019 Share Posted December 12, 2019 (edited) Did you run my example? It works just fine. Of course you have to make sure that you include the xml.au3 file from whatever location it resides in on your computer. Edited December 12, 2019 by TheXman CryptoNG UDF: Cryptography API: Next Gen jq UDF: Powerful and Flexible JSON Processor | jqPlayground: An Interactive JSON Processor Xml2Json UDF: Transform XML to JSON | HttpApi UDF: HTTP Server API | Roku Remote: Example Script About Me How To Ask Good Questions On Technical And Scientific Forums (Detailed) | How to Ask Good Technical Questions (Brief) "Any fool can know. The point is to understand." -Albert Einstein "If you think you're a big fish, it's probably because you only swim in small ponds." ~TheXman Link to comment Share on other sites More sharing options...
Nine Posted December 12, 2019 Share Posted December 12, 2019 Show the code (including my part) that is not working, I will take a look, and help you correct it. “They did not know it was impossible, so they did it” ― Mark Twain Spoiler Block all input without UAC Save/Retrieve Images to/from Text Monitor Management (VCP commands) Tool to search in text (au3) files Date Range Picker Virtual Desktop Manager Sudoku Game 2020 Overlapped Named Pipe IPC HotString 2.0 - Hot keys with string x64 Bitwise Operations Multi-keyboards HotKeySet Recursive Array Display Fast and simple WCD IPC Multiple Folders Selector Printer Manager GIF Animation (cached) Screen Scraping Multi-Threading Made Easy Link to comment Share on other sites More sharing options...
Musashi Posted December 12, 2019 Share Posted December 12, 2019 9 hours ago, jswilcox1980 said: ... but i dont know how to "provide the index" of the variable. Since it's Christmas time, and you characterize yourself as a visual learner, let us create a suitable metaphor . You probably know the special Christmas calendars, where a surprise is waiting behind each of the 24 doors (often chocolate ). Consider these doors a one-dimensional array. However, there is a particular aspect that often irritates users. AutoIt uses so-called zero-based arrays (also termed 0-based). This means : "The array always starts at index zero. So, the first element in the array will be accessed by zero, the second element in the array is accessed at by one and so on. " This indexing is different from how people would proceed in "normal life" (there, the first element would start with index 1). In AutoIt, it starts with Index [0] : #include <Array.au3> Local $aCalendarDoors [24] ; <== 24 Doors : UBound($aCalendarDoors)=Overall number of elements For $i = 0 To UBound($aCalendarDoors) - 1 ; <== set all 24 elements - starting with index 0 If $i < UBound($aCalendarDoors) - 1 Then $aCalendarDoors[$i] = "Door " & ($i + 1) ; <== +1 for the correct day (remember index 0) Else $aCalendarDoors[$i] = "Door " & ($i + 1) & " Happy Christmas :) " EndIf Next _ArrayDisplay($aCalendarDoors, "CalendarDoors", default, default, default, "Day") But there is also an alternative notation : The total number of elements is recorded in Index[0]. Index[1] to Index[24] represent the days. But this means, that we require 25 elements now : #include <Array.au3> Local $aCalendarDoors [25] ; <== total number of elements PLUS 24 Doors $aCalendarDoors [0] = 24 ; <== set total number of elements For $i = 1 To $aCalendarDoors[0] ; starting with index 1 TO number of elements If $i < 24 Then $aCalendarDoors[$i] = "Door " & $i Else $aCalendarDoors[$i] = "Door " & $i & " Happy Christmas :) " EndIf Next _ArrayDisplay($aCalendarDoors, "CalendarDoors", default, default, default, "Day") @jswilcox1980 : I hope that has brought some light into the subject of arrays . P.S. : to the experts : this is of course only a simplified description. "In the beginning the Universe was created. This has made a lot of people very angry and been widely regarded as a bad move." Link to comment Share on other sites More sharing options...
jswilcox1980 Posted December 12, 2019 Author Share Posted December 12, 2019 7 hours ago, Nine said: Show the code (including my part) that is not working, I will take a look, and help you correct it. This could be a formatting issue that i am missing. expandcollapse popup#include <MsgBoxConstants.au3> #include <file.au3> #include <Array.au3> FileVersions() Func FileVersions() ; Retrieve the file versions of specified 3shape application files Local $DSver = FileGetVersion("C:\Program Files\3Shape\DentalManager\Dentalmanager.exe") Local $DSSver = FileGetVersion("C:\Program Files (x86)\3Shape\Dongle Server Service\DongleServer.exe") Local $ScnSvr = FileGetVersion("C:\Program Files\3Shape\Scansuite\Scanserver.exe") Local $SID = FileGetVersion("C:\Program Files\3Shape\ScanitDental\DentalDesktop.exe") Local $AppDsgnr = FileGetVersion("C:\Program Files\3Shape\ApplianceDesigner\ApplianceDesigner.exe") Local $Splintdsgnr = FileGetVersion("C:\Program Files\3Shape\SplintDesigner Splint\ApplianceDesigner.exe") Local $Versiontextfile = (@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt') ;Clears file from previous contents $hFile = FileOpen($Versiontextfile, 2) FileClose($hFile) Opt ("MustDeclareVars", 1) Local $aNumber = StringRegExp (FileRead ("C:\Program Files (x86)\3Shape\Dongle Server Service\DongleServerConfig.xml"),'Dongle Order="\d+" Number="(\d+)',$STR_REGEXPARRAYGLOBALMATCH) _ArrayDisplay ($aNumber) ; Display the file versions ;MsgBox (0,"test",$aNumber[0] & "/" & $aNumber[1]) MsgBox($MB_SYSTEMMODAL,'3Shape Software Versions','Dental System: ' & $DSver &@CRLF _ & 'Dongle Server Service: '& $DSSver & @CRLF _ & 'ScanSuite: '& $ScnSvr & @CRLF _ & 'ScanitDental: '& $SID & @CRLF _ & 'Appliance Designer: '& $AppDsgnr& @CRLF _ & 'Splint Designer: '& $SplintDsgnr &@CRLF _ & 'Dongle Number: '& $aNumber[0] & "/" & $aNumber[1] ) MsgBox($MB_SYSTEMMODAL,'3Shape Software Versions', ' A summary has been saved on the desktop: ' & @CRLF & @CRLF& '" ' & @computername & ' 3shape Dental System File Versions.txt "') ;Below writes all data to text file on desktop FileWriteLine(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt',"") FileWriteLine(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt',"") FileWriteLine(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt','***** 3SHAPE DENTAL SYSTEM FILE VERSIONS *****') FileWriteLine(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt',"") FileWriteLine(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt',"") FileWriteline(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt','Dental System - '& $DSver) FileWriteline(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt','Dongle Server Service - '& $DSSver) FileWriteline(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt','ScanSuite - '& $ScnSvr) FileWriteline(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt','Scanit Dental - '& $SID) FileWriteline(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt','Appliance Designer - '& $AppDsgnr) FileWriteline(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt','Splint Designer - '& $SplintDsgnr) FileWriteline(@DesktopDir &'\' & @computername & ' 3shape Dental System File Versions.txt','Dongle Number - ') Run("notepad.exe " & $Versiontextfile, @WindowsDir, @SW_MAXIMIZE) EndFunc when i try to run it i get this: "C:\Users\Jeremy Wilcox\Desktop\Test Scripts\Get 3shape File Versions.au3" (29) : ==> Subscript used on non-accessible variable.: MsgBox($MB_SYSTEMMODAL,'3Shape Software Versions','Dental System: ' & $DSver &@CRLF & 'Dongle Server Service: '& $DSSver & @CRLF & 'ScanSuite: '& $ScnSvr & @CRLF & 'ScanitDental: '& $SID & @CRLF & 'Appliance Designer: '& $AppDsgnr& @CRLF & 'Splint Designer: '& $SplintDsgnr &@CRLF & 'Dongle Number: '& $aNumber[0] & "/" & $aNumber[1] ) MsgBox($MB_SYSTEMMODAL,'3Shape Software Versions','Dental System: ' & $DSver &@CRLF & 'Dongle Server Service: '& $DSSver & @CRLF & 'ScanSuite: '& $ScnSvr & @CRLF & 'ScanitDental: '& $SID & @CRLF & 'Appliance Designer: '& $AppDsgnr& @CRLF & 'Splint Designer: '& $SplintDsgnr &@CRLF & 'Dongle Number: '& $aNumber^ ERROR Link to comment Share on other sites More sharing options...
Nine Posted December 12, 2019 Share Posted December 12, 2019 Ok, it means that the StringRegExp didn't work. Either the xml file has been changed or the file doesn't exists. When debugging you should put some ConsoleWrite after the problematic functions and show the @error and resulting flags. Here an example of what you should have done to solve your issue : If Not FileExists ("C:\Program Files (x86)\3Shape\Dongle Server Service\DongleServerConfig.xml") Then Exit ConsoleWrite ("File is missing" & @CRLF) Local $aNumber = StringRegExp (FileRead ("C:\Program Files (x86)\3Shape\Dongle Server Service\DongleServerConfig.xml"),'Dongle Order="\d+" Number="(\d+)',$STR_REGEXPARRAYGLOBALMATCH) ConsoleWrite (@error & @CRLF) If not IsArray ($aNumber) Then Exit ConsoleWrite ("SRE did not work" & @CRLF) _ArrayDisplay ($aNumber) MsgBox (0,"test",$aNumber[0] & "/" & $aNumber[1]) “They did not know it was impossible, so they did it” ― Mark Twain Spoiler Block all input without UAC Save/Retrieve Images to/from Text Monitor Management (VCP commands) Tool to search in text (au3) files Date Range Picker Virtual Desktop Manager Sudoku Game 2020 Overlapped Named Pipe IPC HotString 2.0 - Hot keys with string x64 Bitwise Operations Multi-keyboards HotKeySet Recursive Array Display Fast and simple WCD IPC Multiple Folders Selector Printer Manager GIF Animation (cached) Screen Scraping Multi-Threading Made Easy Link to comment Share on other sites More sharing options...
jdelaney Posted December 13, 2019 Share Posted December 13, 2019 (edited) ;~ "some.xml" text: <?xml version="1.0" encoding="UTF-8"?><TServerConfig version="1"><Object type="TServerConfig" name="MainObject"><Property name="ServerPort" value="27027"/><Property name="ServerIP" value=""/><Property name="ExtendedLogging" value="False"/></Object><Dongles><Dongle Order="0" Number="0123456789"/><Dongle Order="1" Number="1122334455"/></Dongles></TServerConfig> Local $oXML = ObjCreate("Microsoft.XMLDOM") $oXML.Load("some.xml") $oDongles = $oXML.selectsinglenode("//Dongles").childnodes For $oDongle In $oDongles $sOrder = $oDongle.getattribute("Order") $sNumber = $oDongle.getattribute("Number") ConsoleWrite("Order=[" & $sOrder & "], Number=[" & $sNumber & "]" & @CRLF) Next Output: Order=[0], Number=[0123456789] Order=[1], Number=[1122334455] You can, in the loop, add the data to a 2d array. Example: #include <Array.au3> ;~ "some.xml" text: <?xml version="1.0" encoding="UTF-8"?><TServerConfig version="1"><Object type="TServerConfig" name="MainObject"><Property name="ServerPort" value="27027"/><Property name="ServerIP" value=""/><Property name="ExtendedLogging" value="False"/></Object><Dongles><Dongle Order="0" Number="0123456789"/><Dongle Order="1" Number="1122334455"/></Dongles></TServerConfig> Local $oXML = ObjCreate("Microsoft.XMLDOM") $oXML.Load("some.xml") Enum $iDongles_Order, $iDongles_Number, $iDongles_Ubound Local $aDongles[0][$iDongles_Ubound] $oDongles = $oXML.selectsinglenode("//Dongles").childnodes For $oDongle In $oDongles ReDim $aDongles[UBound($aDongles)+1][$iDongles_Ubound] $sOrder = $oDongle.getattribute("Order") $sNumber = $oDongle.getattribute("Number") $aDongles[UBound($aDongles)-1][$iDongles_Order]=$sOrder $aDongles[UBound($aDongles)-1][$iDongles_Number]=$sNumber ConsoleWrite("Order=[" & $sOrder & "], Number=[" & $sNumber & "]" & @CRLF) Next _ArrayDisplay($aDongles) array output: 0|0123456789 1|1122334455 Edited December 13, 2019 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. Link to comment Share on other sites More sharing options...
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