public class XmlTemplateEngine extends TemplateEngine
Templates may use the normal '${expression}' and '$variable' notations to insert an arbitrary expression into the template. In addition, support is also provided for special tags: <gsp:scriptlet> (for inserting code fragments) and <gsp:expression> (for code fragments which produce output).
Comments and processing instructions will be removed as part of processing and special XML characters such as <, >, " and ' will be escaped using the respective XML notation. The output will also be indented using standard XML pretty printing.
The xmlns namespace definition for gsp:
tags will be removed
but other namespace definitions will be preserved (but may change to an
equivalent position within the XML tree).
Normally, the template source will be in a file but here is a simple example providing the XML template as a string:
def binding = [firstname:"Jochen", lastname:"Theodorou", nickname:"blackdrag", salutation:"Dear"] def engine = new groovy.text.XmlTemplateEngine() def text = '''\ <?xml version="1.0" encoding="UTF-8"?> <document xmlns:gsp='http://groovy.codehaus.org/2005/gsp' xmlns:foo='baz' type='letter'> <gsp:scriptlet>def greeting = "${salutation}est"</gsp:scriptlet> <gsp:expression>greeting</gsp:expression> <foo:to>$firstname "$nickname" $lastname</foo:to> How are you today? </document> ''' def template = engine.createTemplate(text).make(binding) println template.toString()This example will produce this output:
<document type='letter'> Dearest <foo:to xmlns:foo='baz'> Jochen "blackdrag" Theodorou </foo:to> How are you today? </document>The XML template engine can also be used as the engine for
TemplateServlet
by placing the
following in your web.xml file (plus a corresponding servlet-mapping element):
<servlet> <servlet-name>XmlTemplate</servlet-name> <servlet-class>groovy.servlet.TemplateServlet</servlet-class> <init-param> <param-name>template.engine</param-name> <param-value>groovy.text.XmlTemplateEngine</param-value> </init-param> </servlet>
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
DEFAULT_INDENTATION |
Constructor and Description |
---|
XmlTemplateEngine() |
XmlTemplateEngine(java.lang.String indentation,
boolean validating) |
XmlTemplateEngine(XmlParser xmlParser,
java.lang.ClassLoader parentLoader) |
XmlTemplateEngine(XmlParser xmlParser,
GroovyShell groovyShell) |
Modifier and Type | Method and Description |
---|---|
Template |
createTemplate(java.io.Reader reader) |
java.lang.String |
getIndentation() |
void |
setIndentation(java.lang.String indentation) |
java.lang.String |
toString() |
createTemplate, createTemplate, createTemplate
public static final java.lang.String DEFAULT_INDENTATION
public XmlTemplateEngine() throws org.xml.sax.SAXException, javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXException
javax.xml.parsers.ParserConfigurationException
public XmlTemplateEngine(java.lang.String indentation, boolean validating) throws org.xml.sax.SAXException, javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXException
javax.xml.parsers.ParserConfigurationException
public XmlTemplateEngine(XmlParser xmlParser, java.lang.ClassLoader parentLoader)
public XmlTemplateEngine(XmlParser xmlParser, GroovyShell groovyShell)
public Template createTemplate(java.io.Reader reader) throws CompilationFailedException, java.lang.ClassNotFoundException, java.io.IOException
createTemplate
in class TemplateEngine
CompilationFailedException
java.lang.ClassNotFoundException
java.io.IOException
public java.lang.String getIndentation()
public void setIndentation(java.lang.String indentation)
public java.lang.String toString()
toString
in class java.lang.Object