N00B08 Posted June 18, 2010 Share Posted June 18, 2010 I am pretty green at this, and not sure how to parse the lines in my XML file to pull back a value. Thus far I am able to open the file, read the lines and trim, but I can't seem to remember how to get the rest. My goal is to get the IP value so that I can then add it to a UNC path for a backup script. This is an example of the XML file/format. <?xml version="1.0" encoding="utf-8"?> <Variables> <Variable Name="Server\ServerName">TEST</Variable> <Variable Name="Server\ServerIP">192.168.1.103</Variable> <Variable Name="Install\InstallDir">C:\InstallPath</Variable> <Variable Name="SystemCheck\Operating System\Name">Microsoft Windows XP Professional</Variable> <Variable Name="SystemCheck\Operating System\ServicePack">3</Variable> <Variable Name="SystemCheck\Video\Memory">512</Variable> <Variable Name="Software\Version">3.0.0.2312</Variable> <Variable Name="Software\Language">English</Variable> </Variables> I was hoping someone would be kind enough to help me....? Link to comment Share on other sites More sharing options...
PsaltyDS Posted June 18, 2010 Share Posted June 18, 2010 (edited) You can just parse the strings, or learn to use XPaths: #include <_XMLDOMWrapper.au3> #include <Array.au3> $debugging = True ; Internal debug variable inside _XMLDOMWrapper.au3 $sXML_File = @ScriptDir & "\Test1.xml" _XMLFileOpen($sXML_File) $aValue = _XMLGetValue('/Variables/Variable[@Name="Server\ServerIP"]') If IsArray($aValue) Then _ArrayDisplay($aValue, "$aValue") Else ConsoleWrite("Error: $aArray = " & $aValue & @LF) EndIfThe more complicated the XML file, the less string parsing you want to do, so eventually you want to learn this stuff. Edit: Same goes for RegExp! (See UEZ below.) Edited June 18, 2010 by PsaltyDS Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law Link to comment Share on other sites More sharing options...
UEZ Posted June 18, 2010 Share Posted June 18, 2010 (edited) One solution:$XML = '<?xml version="1.0" encoding="utf-8"?>' & @LF & _ '<Variables>' & @LF & @LF & _ '<Variable Name="Server\ServerName">TEST</Variable>' & @LF & _ '<Variable Name="Server\ServerIP">192.168.1.103</Variable>' & @LF & _ '<Variable Name="SystemCheck\Operating System\Name">Microsoft Windows XP Professional</Variable>' & @LF & _ '<Variable Name="SystemCheck\Operating System\ServicePack">3</Variable>' & @LF & _ '<Variable Name="SystemCheck\Video\Memory">512</Variable>' & @LF & _ '<Variable Name="Software\Version">3.0.0.2312</Variable>' & @LF & _ '<Variable Name="Software\Language">English</Variable>' & @LF & _ '</Variables>' $ip = StringRegExp($XML, '"Server\\ServerIP">(.+)</Variable>', 3) $ip = $ip[0] ConsoleWrite($ip & @CRLF)BR,UEZ Edited June 18, 2010 by UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
N00B08 Posted June 18, 2010 Author Share Posted June 18, 2010 Thank you both for help and the education!!I was trying the stringregexp route for the past couple hours, but hit a wall....or learn to use XPaths:I was looking for this right before I posted my question. A friend told me to try the xpath route, but he wasn't familiar with autoit, and I couldn't find the right info when I searched. Link to comment Share on other sites More sharing options...
Bowmore Posted June 18, 2010 Share Posted June 18, 2010 I was looking for this right before I posted my question. A friend told me to try the xpath route, but he wasn't familiar with autoit, and I couldn't find the right info when I searched.You might also find it useful to learn XQuery as well. which extends XPath syntax to give similar functionality to using SQL on a database.For relatively simple XML files without many xml attributes then the _StringBetween() function is a quick and easy way to parse XML "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning."- Rick Cook 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