Sample code for 30+ languages & platforms
Lua Requires Chilkat v9.5.0.77+

Handling Namespaces in XML Tags

See more XML Examples

Demonstrates features for helping with namespace prefixed tags.

Chilkat Lua Downloads

Lua
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)