To start off with do this:
Now there are two ways to parse it.
Method 1:
Method 2:
Check to make sure we have the root node:
If Method 1 was used:
If method 2 was used print out the fields so we know what we are dealing with:
Basicallay it will return with a dictionary (key, value pair) with the following syntax:
Element.ChildElement = value
Element.ChildElement.ChildChildElement = value
To access the values just do a:
Note: If Elements at the same level appear you may have the following:
Element.ChildElement = value
Element.2.ChildElement = value
Look at what the debug.write(fields) prints out to be sure. The count of each Element will be included here too so make sure to print out debug.write(fields).
Dim txt
Dim fieldStart, fieldEnd
Dim xml
Dim fields
Dim ltxt
Dim key
Dim value
txt = trim(content.item("_cmsEmailBody"))
ltxt = lcase(txt)
fieldStart = inStr(ltxt, "<root>")
fieldEnd = inStr(ltxt, "</root>")
if fieldStart >= fieldEnd then
content.add "_cmsError", "Invalid email format. No XML data detected."
exit Sub
end if
' skip the end /root
fieldEnd = fieldEnd + 6
set xml = system.createXML()
if not xml.loadXML(mid(txt, fieldStart, fieldEnd)) then
content.add "_cmsError", "Invalid XML format."
exit Sub
end if
Now there are two ways to parse it.
Method 1:
set fields = xml.selectSingleNodeAsContent("root")
Method 2:
set fields = xml.selectSingleNodeAsDic("root")
Check to make sure we have the root node:
if not isObject(fields) then
content.add "_cmsError", "Invalid xml format. Missing root /root node."
exit Sub
end if
If Method 1 was used:
if isObject(fields) then
for each key in fields
value = fields.item(key)
' do any renaming/processing here
if LCase(key) = "txt_body" then
value = util.convertTextToHTML(value)
end if
' skip over token and save the rest
if LCase(key) <> "token" then
content.add key, value
end if
next
end if
If method 2 was used print out the fields so we know what we are dealing with:
debug.write(fields)
Basicallay it will return with a dictionary (key, value pair) with the following syntax:
Element.ChildElement = value
Element.ChildElement.ChildChildElement = value
To access the values just do a:
fields.item("Element.ChildElment")
Note: If Elements at the same level appear you may have the following:
Element.ChildElement = value
Element.2.ChildElement = value
Look at what the debug.write(fields) prints out to be sure. The count of each Element will be included here too so make sure to print out debug.write(fields).
Comments