AutoIt
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
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