String XML and XHTML Escape
FreeMarker is a java based template engine for complex template processing.
This requires the library freemarker-2.3.16.jar to be in classpath.
The following example shows escaping xml and xhtml using built-in functions.
package com.bethecoder.tutorials.freemarker.tests;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class StringXMLTest {
/**
* @param args
* @throws IOException
* @throws TemplateException
*/
public static void main ( String [] args ) throws IOException, TemplateException {
//Get template from classpath
Configuration cfg = new Configuration () ;
cfg.setClassForTemplateLoading ( StringXMLTest.class, "/" ) ;
Template template = cfg.getTemplate ( "xml.ftl" ) ;
//Prepare data model
Map<String, Object> dataModel = new HashMap<String, Object> () ;
dataModel.put ( "msg" ,
"<html><body>" +
"'One', 'two', \"Three & Four\"" +
"</body></html>" ) ;
//Merge template and data
OutputStreamWriter output = new OutputStreamWriter ( System.out ) ;
template.process ( dataModel, output ) ;
}
}
It gives the following output,
<html><body> 'On e ', 'tw o ', "Three & Four" </body></html>
<html><body>'One', 'two', "Three & Four"</body></html>
<html><body>&# 39 ;One&# 39 ;, &# 39 ;two&# 39 ;, "Three & Four"</body></html>