Sample code for 30+ languages & platforms
Tcl

XML NewChildBefore

Demonstrates the Chilkat.NewChildBefore method.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

set xml [new_CkXml]

CkXml_put_Tag $xml "order"
CkXml_NewChild2 $xml "order_billing_info|price_list" "Listino Italia"
CkXml_NewChild2 $xml "order_billing_info|price_list_id" "1"
CkXml_NewChild2 $xml "order_billing_info|first_name" "Francesco"

puts [CkXml_getXml $xml]

# We now have the following XML:

# <?xml version="1.0" encoding="utf-8"?>
# <order>
#     <order_billing_info>
#         <price_list>Listino Italia</price_list>
#         <price_list_id>1</price_list_id>
#         <first_name>Francesco</first_name>
#     </order_billing_info>
# </order>

# If there is no "customer_id" element under "order_billing_info", then add it.
if {[CkXml_HasChildWithTag $xml "order_billing_info|customer_id"] == 1} then {
    puts "customer_id already exists, nothing to do..."
    delete_CkXml $xml
    exit
}

# Add the customer_id element just before the "price_list" element.

# Get the "order_billing_info" element
# orderBillingInfo is a CkXml
set orderBillingInfo [CkXml_FindChild $xml "order_billing_info"]

# Call NewChildBefore to add an XML element <customer_id> before <price_list>
# First get the index of the element price_list
set index [CkXml_TagIndex $orderBillingInfo "price_list"]
puts "index = $index"

# Add the "customer_id" element just before specified index.
# xCustId is a CkXml
set xCustId [CkXml_NewChildBefore $orderBillingInfo $index "customer_id" "1234"]
delete_CkXml $xCustId

delete_CkXml $orderBillingInfo

puts [CkXml_getXml $xml]

# We now have:

# <?xml version="1.0" encoding="utf-8"?>
# <order>
#     <order_billing_info>
#         <customer_id>1234</customer_id>
#         <price_list>Listino Italia</price_list>
#         <price_list_id>1</price_list_id>
#         <first_name>Francesco</first_name>
#     </order_billing_info>
# </order>

delete_CkXml $xml