How to HTML encode

xml entity_2018_09_24.slp (9.3 KB)


We recently encountered an issue involving passing a variable to an XML generator. The variable contains an ampersand (’&’), which causes the XML generator to throw the error ‘The entity name must immediately follow the “&” in the entity reference.’ This is, of course, because the ampersand is not being encoded as ‘&’. We’ve been unable to find a way to automatically convert special characters such as ‘&’, ‘>’, ‘<’ to their HTML counterpart. Can anyone suggest a way to do so other than using the Script Snap?

I’ve attached an example pipeline where the XML generator fails due to lack of encoding and succeeds when encoded.

Have you tried using the encodeURIComponent() function? E.g. encodeURIComponent(“sam & max”)

The next release of the platform will have an expression language function for converting characters to their HTML entities. Until then, I think most people use replace() to do the substitution on the string, like so:

$msg.replaceAll('&', '&amp;').replaceAll('<', '&lt;').replaceAll('>', '&gt;')

Or, the slightly fancier:

$msg.replace(/&|<|>/g, m => match m { '&' => '&amp;', '<' => '&lt;', '>' => '&gt;' })
1 Like