I'm developing an application which uses different components to create an XHTML document, I used StringTemplate for creating the document data of the components and then combined them into a one large document. This is an example of a component:
public class BoxImpl extends AbstractContainerImpl implements Box {
private static final StringTemplate template;
static {
template = new StringTemplate(
"<div id=$id$>$content$</div>");
}
public BoxImpl(String id) {
this.setId(id);
}
@Override
public CharBuffer generate() {
// Get a local instance
StringTemplate template = BoxImpl.template.getInstanceOf();
// Set ID attribute of box
template.setAttribute("id", this.getId());
// Generate view for controls inside this container
CharBuffer inner = this.generateInner();
// Add inner data as content attribute
template.setAttribute("content", inner == null ? "" : inner.array());
// Return the result
return CharBuffer.wrap(BoxImpl.template.toString());
}
}
My question is, is it more efficient to implement this kind of document building using XML DOM or a StringBuilder, compared to the StringTemplate?
EDIT: I do not need XML validation.