Sample code for 30+ languages & platforms
AutoIt

Find XML Element where Attribute = Value

See more XML Examples

Finds an XML element at a particular location where an attribute has a specified value.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

; We have the following XML and wish to find the value of the time attribute where msg = "alert-from".

; <cdr id="4e5d3e7f41bf6201ad81000c29703270" e164="6207">
;     <user>
;         <grp name="wfln" mode="active"/>
;     </user>
;     <event msg="setup-to" time="287069" e164="5034"/>
;     <event msg="alert-from" time="287069" e164="5034"/>
;     <event msg="rel-to" time="287079" e164="5034"/>
; </cdr>

; First, build the above XML:

$oXml = ObjCreate("Chilkat.Xml")
$oXml.Tag = "cdr"
$oXml.AddAttribute("id","4e5d3e7f41bf6201ad81000c29703270")
$oXml.AddAttribute("e164","6207")
$oXml.UpdateAttrAt("user|grp",True,"name","wfln")
$oXml.UpdateAttrAt("user|grp",True,"mode","active")
$oXml.UpdateAttrAt("event",True,"msg","setup-to")
$oXml.UpdateAttrAt("event",True,"time","287069")
$oXml.UpdateAttrAt("event",True,"e164","5034")
$oXml.UpdateAttrAt("event[1]",True,"msg","alert-from")
$oXml.UpdateAttrAt("event[1]",True,"time","287069")
$oXml.UpdateAttrAt("event[1]",True,"e164","5034")
$oXml.UpdateAttrAt("event[2]",True,"msg","rel-to")
$oXml.UpdateAttrAt("event[2]",True,"time","287079")
$oXml.UpdateAttrAt("event[2]",True,"e164","5034")

; Show that we have the above XML
ConsoleWrite($oXml.GetXml() & @CRLF)

; Find the element where msg = "alert-from"
; This updates the xml object's reference to the found element (if successful).
Local $sNotUsed = $oXml.ChilkatPath("/A/event,msg,alert-from|$")
If ($oXml.LastMethodSuccess = False) Then
    ConsoleWrite("Not found." & @CRLF)
    Exit
EndIf

; Get the value of the "time" attribute.
ConsoleWrite("time = " & $oXml.GetAttrValue("time") & @CRLF)

; Restore the xml object's internal reference to the root of the XML document
$oXml.GetRoot2