Set an XML node to a space " " character
Demonstrates the best way to set a XML node to a space character, by using setText(' ') from the xml.lua module
require 'xml' function main(Data) -- Parse the XML message local XML = xml.parse(Data) -- Setting social-security-no to a string value works as desired local SSN = XML.patients.patient["social-security-no"]:setInner('confidential') trace(XML) -- Setting social-security-no to a space does not work as desired -- setInner() parses the string and truncates spaces -- it also removes the TEXT element node (beneath social-security-no) local SSN = XML.patients.patient["social-security-no"]:setInner(' ') trace(XML) -- RECOMMENDED BEST PRACTICE: use setText(' ') -- Setting social-security-no to a space works as desired -- setText() sets the TEXT element node to a space (or any string value) -- it also appends a TEXT element node when one does not exists local SSN = XML.patients.patient["social-security-no"]:setText(' ') trace(XML) end
This code addresses a problem when writing a space to an XML TEXT element. The issue is a simple one: If you use the
node:setInner(" ") function to set an XML node to a space (” “), it is instead set to an empty string (“”).
We show you our recommended Best Practice solution, which uses the
node:setText() function, from the xml custom module.
How to use the code:
- Use a Filter or To Translator script
- Add the code
- Load the sample messages from SampleData.txt
Note: You will need to split the six XML messages manually, as they are loaded as a single “message” when you import the the file into sample data
- Alternatively you can also load the attached project which already contains the separated XML sample messages
- Inspect the code and annotations to see how it works
Note: This code is explained in detail in the How to set an XML node to a space ” ” character tutorial.