Skip to main content

Parsing XML Documents in the CMS: 2 Methods

To start off with do this:

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

blahblahyaya said…
Thanks! I couldn't remember that selectSingleNodeAsDic was the function to use.

Popular posts from this blog

Thumbnails from Images that are linked already uploaded to the CMS

' make sure WYSIWYG images don't get too wide using upload.asp value = content.item("_cmsUploadValue") debug.write(value) ext=filename.getextension(content.item("_cmsUploadValue")) ' create a medium size thumbnail if ext="gif" or ext="jpg" then res = image.thumbnail(value, "", 20, 20) if res = "" then content.add "_cmsError", image.errorMsg exit Sub end if content.add "upload#my_photo", res end if %> Then in the post_input.asp we would have the code that would be used to create thumbnails from images that are linked: value = asset.getAbsoluteName(content.item("my_photo")) debug.write(value) 'Process only if selected asset has been uploaded to the /Assets/ folder in the CMS if instr(value, "/Assets/") > 0 then value = "/ChemicalHeritage/ftproot" & value ih = image.load(value) if ih content.add "_cmsError", image.errorMsg exit Sub end if image....

Laravel 5.1 - Step by step instructions for setting up default authentication

Create a Database in MySQL 1. Login to MySQL 2. Run the command to create a database for your application CREATE DATABASE database_name; 3. You'll probably also need to create a user to access the database CREATE USER 'username'@'localhost' IDENTIFIED BY 'some_password'; 4. Then you'll need to grant this user access to the database you created GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost' ;  Configure Laravel Database Connection The DB configuration file is located at /config/database.php. You'll need to edit the following highlighted sections in this file with the values needed to connect to the database you've created from above. Configure Environment If you installed Laravel through Composer, in the root of the Laravel install there is a hidden .env file which is automatically renamed from .env.example . If you didn't user Composer, you'll need to rename this file yourself. ...