Lua Requires Chilkat v9.5.0.77+
Lua
Handling Namespaces in XML Tags
See more XML Examples
Demonstrates features for helping with namespace prefixed tags.Chilkat Lua Downloads
local chilkat = require("chilkat")
-- First create some XML using namespace prefixed tags.
-- Create this XML.
-- Use this online tool to generate the code from sample XML:
-- Generate Code to Create XML
-- <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
-- xmlns:scm="http://www.springcm.com/atlas/webservices/v201308/scm/">
-- <soapenv:Header/>
-- <soapenv:Body>
-- <scm:AccountGetCurrent>
-- <scm:token>123</scm:token>
-- </scm:AccountGetCurrent>
-- </soapenv:Body>
-- </soapenv:Envelope>
local xml = chilkat.Xml.new()
xml.tag = "soapenv:Envelope"
xml:add_attribute("xmlns:soapenv", "http://schemas.xmlsoap.org/soap/envelope/")
xml:add_attribute("xmlns:scm", "http://www.springcm.com/atlas/webservices/v201308/scm/")
xml:update_child_content("soapenv:Header", "")
xml:update_child_content("soapenv:Body|scm:AccountGetCurrent|scm:token", "123")
-- Go to the "Body" tag, regardless of namespace prefix.
local xmlBody = xml:find_child("*:Body")
if not xml.last_method_success then
print("Body child not found.")
return
end
-- Get the full tag w/ namespace prefix:
-- Output is "soapenv:Body"
print(xmlBody.tag)
-- Get the namespace prefix:
-- Output is "soapenv"
print(xmlBody.tag_ns_prefix)
-- Get the unprefixed tag:
-- Output is "Body"
print(xmlBody.tag_unprefixed)
-- Check to see if the unprefixed tag equals "Body"
local isBodyTag = xmlBody:tag_unp_equals("Body")
print("isBodyTag = " .. tostring(isBodyTag))
-- Check to see if the namespace prefix equals "soapenv";
local isSoapenv = xmlBody:tag_ns_equals("soapenv")
print("isSoapenv = " .. tostring(isSoapenv))
-- Change just the namespace prefix of the tag
xmlBody.tag_ns_prefix = "se"
-- The tag has changed from "soapenv:Body" to "se:Body"
print(xmlBody.tag)
-- Change the unprefixed part of the tag.
xmlBody.tag_unprefixed = "Bodie"
-- The tag has changed from "se:Body" to "se:Bodie"
print(xmlBody.tag)