Package groovy.text

Class XmlTemplateEngine


public class XmlTemplateEngine
extends TemplateEngine
Template engine for use in templating scenarios where both the template source and the expected output are intended to be XML.

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='' xmlns:foo='baz' type='letter'>
   <gsp:scriptlet>def greeting = "${salutation}est"</gsp:scriptlet>
   <foo:to>$firstname "$nickname" $lastname</foo:to>
   How are you today?
 def template = engine.createTemplate(text).make(binding)
 println template.toString()
This example will produce this output:
 <document type='letter'>
 <foo:to xmlns:foo='baz'>
   Jochen &quot;blackdrag&quot; Theodorou
 How are you today?
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):
  • Field Details


      public static final java.lang.String DEFAULT_INDENTATION
      See Also:
      Constant Field Values
  • Constructor Details

    • XmlTemplateEngine

      public XmlTemplateEngine() throws org.xml.sax.SAXException, javax.xml.parsers.ParserConfigurationException
    • XmlTemplateEngine

      public XmlTemplateEngine​(java.lang.String indentation, boolean validating) throws org.xml.sax.SAXException, javax.xml.parsers.ParserConfigurationException
    • XmlTemplateEngine

      public XmlTemplateEngine​(XmlParser xmlParser, java.lang.ClassLoader parentLoader)
    • XmlTemplateEngine

      public XmlTemplateEngine​(XmlParser xmlParser, GroovyShell groovyShell)
  • Method Details

    • setConfigurePrinter

      public void setConfigurePrinter​(Closure configurePrinter)
      Closure that can be used to configure the printer. The printer is passed as a parameter to the closure.
       new XmlTemplateEngine(configurePrinter: { it.preserveWhitespace = true })
    • createTemplate

      public Template createTemplate​( reader) throws CompilationFailedException, java.lang.ClassNotFoundException,
      Description copied from class: TemplateEngine
      Creates a template by reading content from the Reader.
      Specified by:
      createTemplate in class TemplateEngine
    • getIndentation

      public java.lang.String getIndentation()
    • setIndentation

      public void setIndentation​(java.lang.String indentation)
    • toString

      public java.lang.String toString()
      toString in class java.lang.Object