Sample code for 30+ languages & platforms
Tcl

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 Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

# 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:

set xml [new_CkXml]

CkXml_put_Tag $xml "cdr"
CkXml_AddAttribute $xml "id" "4e5d3e7f41bf6201ad81000c29703270"
CkXml_AddAttribute $xml "e164" "6207"
CkXml_UpdateAttrAt $xml "user|grp" 1 "name" "wfln"
CkXml_UpdateAttrAt $xml "user|grp" 1 "mode" "active"
CkXml_UpdateAttrAt $xml "event" 1 "msg" "setup-to"
CkXml_UpdateAttrAt $xml "event" 1 "time" "287069"
CkXml_UpdateAttrAt $xml "event" 1 "e164" "5034"
CkXml_UpdateAttrAt $xml "event[1]" 1 "msg" "alert-from"
CkXml_UpdateAttrAt $xml "event[1]" 1 "time" "287069"
CkXml_UpdateAttrAt $xml "event[1]" 1 "e164" "5034"
CkXml_UpdateAttrAt $xml "event[2]" 1 "msg" "rel-to"
CkXml_UpdateAttrAt $xml "event[2]" 1 "time" "287079"
CkXml_UpdateAttrAt $xml "event[2]" 1 "e164" "5034"

# Show that we have the above XML
puts [CkXml_getXml $xml]

# Find the element where msg = "alert-from"
# This updates the xml object's reference to the found element (if successful).
set notUsed [CkXml_chilkatPath $xml "/A/event,msg,alert-from|$"]
if {[CkXml_get_LastMethodSuccess $xml] == 0} then {
    puts "Not found."
    delete_CkXml $xml
    exit
}

# Get the value of the "time" attribute.
puts "time = [CkXml_getAttrValue $xml time]"

# Restore the xml object's internal reference to the root of the XML document
CkXml_GetRoot2 $xml

delete_CkXml $xml