I found something interesting today at work while playing with Groovy. By default, the StreamingMarkupBuilder builds empty tags like this:

<someTag />

but an external system that uses our API needs the tags to be expanded like this:

<someTag></someTag>

There is a very simple attribute that took me more than a few minutes to find so I wanted to share it. If you do this when configuring your StreamingMarkupBuilder object, empty tags will be expanded out: