01-07-2012

Groovy supports the concept of builders, which provide an abstraction between the required output content and the representation of it. Groovy supports this by providing a tree like structure in groovy code that represents the required HTML or XML:

import groovy.xml.MarkupBuilder

// create a builder to generate xml like content from a
// builder structure, in this case we choose
// StringWriter as the output, but it could be any writer.
def writer = new StringWriter();
def builder = new MarkupBuilder(writer);

builder.html {
    head {
        title "Hello world"
    }
    body {
        h1 "My Hello world page"
        p "This is the content"
    }
}

println(writer);

So what have we done?

We generated some HTML, in this case we just printed it to the console, but we could have sent this back to a web browser for example, or saved it to disk. The XML structure that we generated from above looked as follows:

<html>
  <head>
    <title>Hello world</title>
  </head>
  <body>
    <h1>My Hello world page</h1>
    <p>This is the content</p>
  </body>
</html>

As can be seen, its very straight forward to write XML formatted data with Groovy. To me this was a major feature when I started looking at the language. On the next page I look at a more complex example, of writing an ATOM syndication document using the builder. This requires namespace support and interaction with closures.

These may be of interest

We use cookies to analyse traffic and to personalise content. We also embed Twitter and Youtube on some pages, these companies have their own privacy policies.

See the privacy policy and terms of use of this site should you need more information or wish to adjust your settings.