Jump to content

Recommended Posts

Posted

I'd use autoit to operate xml and properties/ini files, like changing some node/key values, inserting/deleting node/key.

Not sure what's the best way to achieve this?

Posted

There is a set of functions, a UDF, in the example scripts section for handling XML files.

AutoIt has built-in functions for dealing with INI files.

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Posted

Thanks for replying. C

There is a set of functions, a UDF, in the example scripts section for handling XML files.

AutoIt has built-in functions for dealing with INI files.

Thanks for replying. What's the build-in functions for dealing with ini file? Is there any example for it?

Posted

Functions IniRead etc. Examples can be found in the help file.

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Posted (edited)

delete nodes:

http://www.w3schools.com/dom/dom_nodes_remove.asp

add nodes:

http://www.w3schools.com/dom/dom_nodes_create.asp

change nodes:

http://www.w3schools.com/dom/dom_nodes_set.asp

example of simple query of xml:

$string = '<XML><Group name="Office1"><host><name>O1Pc1</name><ip>192.168.0.1</ip></host><host><name>O1Pc2</name><ip>192.168.0.2</ip></host></Group><Group name="Office2"><host><name>O2Pc1</name><ip>192.168.0.11</ip></host><host><name>O2Pc2</name><ip>192.168.0.12</ip></host></Group></XML>'
$oXML=ObjCreate("Microsoft.XMLDOM")
;$XML = @DesktopDir & "\xml1.xml"
;$oXML.load($XML) ; load document
$oXML.loadxml($string) ; load string
ConsoleWrite ( $oXML.xml & @CRLF)
;select single node
$result = $oXML.selectSingleNode( '//Group[@name="Office1"]' )
ConsoleWrite('Using $oXML.selectSingleNode: ' & @crlf )
ConsoleWrite ( $result.XML & @CRLF)
;select node col
$results = $oXML.selectNodes( '//Group' )
ConsoleWrite('Using $oXML.selectNodes: ' & @crlf )
For $result in $results
ConsoleWrite ($result.xml & @CRLF)
Next
Edited 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.
Posted

Thanks, guys. I have tried iniwrite. It's pretty easy. I'm working on xml files now.

How about properties? I used iniwrite, but there is a blank section generated. Is there any better way?

Posted

Hi jdelaney

Thanks for your reply. Your code works fine.

But how about modify the node/properties value? And save the result back?

It will save a lot of my time on trying this if you can help me. Thanks in advance.

delete nodes:

http://www.w3schools.com/dom/dom_nodes_remove.asp

add nodes:

http://www.w3schools.com/dom/dom_nodes_create.asp

change nodes:

http://www.w3schools.com/dom/dom_nodes_set.asp

example of simple query of xml:

$string = '<XML><Group name="Office1"><host><name>O1Pc1</name><ip>192.168.0.1</ip></host><host><name>O1Pc2</name><ip>192.168.0.2</ip></host></Group><Group name="Office2"><host><name>O2Pc1</name><ip>192.168.0.11</ip></host><host><name>O2Pc2</name><ip>192.168.0.12</ip></host></Group></XML>'
$oXML=ObjCreate("Microsoft.XMLDOM")
;$XML = @DesktopDir & "\xml1.xml"
;$oXML.load($XML) ; load document
$oXML.loadxml($string) ; load string
ConsoleWrite ( $oXML.xml & @CRLF)
;select single node
$result = $oXML.selectSingleNode( '//Group[@name="Office1"]' )
ConsoleWrite('Using $oXML.selectSingleNode: ' & @crlf )
ConsoleWrite ( $result.XML & @CRLF)
;select node col
$results = $oXML.selectNodes( '//Group' )
ConsoleWrite('Using $oXML.selectNodes: ' & @crlf )
For $result in $results
ConsoleWrite ($result.xml & @CRLF)
Next

Posted (edited)

I'm thinking a property is an attribute, right? <test @att1='something'>

Use

$attribute = $node.getattributenode('att1')
$attribute.nodeValue="Somethinge else"

or, something like this:

$result1 = $oXML.selectSingleNode('//test/@att1')
$result1.text = "new attribute value"

lots of ways

Edited 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.
Posted

Here is the modified code based on jdelaney.

For futhur info about XML DOM Methods, pls refers to http://msdn.microsoft.com/en-us/library/windows/desktop/ms757828%28v=vs.85%29.aspx

;$string = '<XML><Group name="Office1"><host><name>O1Pc1</name><ip>192.168.0.1</ip></host><host><name>O1Pc2</name><ip>192.168.0.2</ip></host></Group><Group name="Office2"><host><name>O2Pc1</name><ip>192.168.0.11</ip></host><host><name>O2Pc2</name><ip>192.168.0.12</ip></host></Group></XML>'

$oXML=ObjCreate("Microsoft.XMLDOM")

$oXML.load("D:temptest.xml") ; load string

ConsoleWrite ( $oXML.xml & @CRLF)

;select single node

$result = $oXML.selectSingleNode( '//Group[@name="Office1"]' )

ConsoleWrite('Using $oXML.selectSingleNode: ' & @crlf )

ConsoleWrite ( $result.XML & @CRLF)

;select single node by childe node value

$result = $oXML.selectSingleNode( '//Group/host[name="O1Pc1"]' )

ConsoleWrite('Using $oXML.selectSingleNode by child node value: ' & @crlf )

ConsoleWrite ( $result.XML & @CRLF)

;select single node by node value and modify the node

$result = $oXML.selectSingleNode( '//Group/host/name[text()="O1Pc1"]' )

$result.text="abcdefg"

ConsoleWrite('Using $oXML.selectSingleNode by node value and modified: ' & @crlf )

ConsoleWrite ( $result.XML & @CRLF)

;select nodes and modify attribute value

$results = $oXML.selectNodes( '//Group' )

ConsoleWrite('Using $oXML.selectNodes: ' & @crlf )

For $result in $results

ConsoleWrite ($result.xml & @CRLF)

$result.setAttribute("name", "abcdef")

ConsoleWrite ($result.xml & @CRLF)

Next

;save the modified xml

$oXML.save("D:temptest_modified.xml")

Posted

Does anyone know how to manipulate java properties file. It's pretty much like ini file, but without section

I tried iniwrite, but it will input a section even with null or blank value as section input.

Thanks, guys. I have tried iniwrite. It's pretty easy. I'm working on xml files now.

How about properties? I used iniwrite, but there is a blank section generated. Is there any better way?

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
  • Recently Browsing   0 members

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