Sample code for 30+ languages & platforms
Tcl

Demonstrates the ChilkatPath XML Method

Demonstrates how to use the ChilkatPath method. This example uses the XML sample file pigs.xml. The pigs.xml file contains this content:

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

set xml [new_CkXml]

set success [CkXml_LoadXmlFile $xml "qa_data/xml/pigs.xml"]
if {$success != 1} then {
    puts [CkXml_lastErrorText $xml]
    delete_CkXml $xml
    exit
}

# Get the content of the "species" node for the 1st animal:

set result [CkXml_chilkatPath $xml "animal|species|*"]
# Output should be "pot belly pig"
puts "$result"

# Get the content of the "type" node for the 2nd animal:
# Indexing begins at 0.  Therefore, the 2nd direct child having
# the tag "animal" is at index 1
set result [CkXml_chilkatPath $xml "animal[1]|type|*"]
# Output should be "House Pig"
puts "$result"

# Find the pig having the name "Nigel" and display the
# birth date.  To do this, we'll navigate to the node having
# tag="name" with the exact content "Nigel", then navigate up, 
# and finally navigate back down to the "birth" node:
set result [CkXml_chilkatPath $xml "/C/name,Nigel|..|birth|*"]
# Output should be "June, 1991"
puts "$result"

# Navigate to the 1st animal's picture and print the filename,
# description, and caption.
# The "$" updates the caller's internal pointer to reference
# the node that is the result of evaluating the path.
# An empty string is returned for success, and a NULL/nil/0
# pointer (reference) is returned on failure.  
set result [CkXml_chilkatPath $xml "animal|picture|$"]
if {[CkXml_get_LastMethodSuccess $xml] != 1} then {
    puts "Failed to navigate to animal|picture."
    delete_CkXml $xml
    exit
}

# Display the contents of the file/description/caption child nodes
puts "Picture Info:"
puts [CkXml_getChildContent $xml file]
puts [CkXml_getChildContent $xml description]
puts [CkXml_getChildContent $xml caption]

# Return back to the root of the XML document:
CkXml_GetRoot2 $xml

# Display the value of the "spay-neuter" attribute of the 1st animal:
puts "----"
set result [CkXml_chilkatPath $xml "animal|gender|(spay-neuter)"]
puts "$result"

delete_CkXml $xml