public class MarkupBuilder
extends BuilderSupport
A helper class for creating XML or HTML markup. The builder supports various 'pretty printed' formats.
Example:
new MarkupBuilder().root {
a( a1:'one' ) {
b { mkp.yield( '3 < 5' ) }
c( a2:'two', 'blah' )
}
}
Will print the following to System.out:
<root>
<a a1='one'>
<b>3 < 5</b>
<c a2='two'>blah</c>
</a>
</root>
Notes:
mkp is a special namespace used to escape
away from the normal building mode of the builder and get access
to helper markup methods such as 'yield' and 'yieldUnescaped'.
See the javadoc for getMkp() for further details.| Modifiers | Name | Description |
|---|---|---|
enum |
MarkupBuilder.CharFilter |
Identifiers for built-in character filtering strategies. |
static class |
MarkupBuilder.DefaultXmlEscapingFunction |
Default character replacement function used for XML content and attribute escaping. |
| Constructor and description |
|---|
MarkupBuilder()Prints markup to System.out |
MarkupBuilder(PrintWriter pw)Sends markup to the given PrintWriter |
MarkupBuilder(Writer writer)Sends markup to the given Writer but first wrapping it in a PrintWriter |
MarkupBuilder(IndentPrinter out)Sends markup to the given IndentPrinter. |
| Type Params | Return Type | Name and description |
|---|---|---|
|
protected Object |
createNode(Object name)Builder lifecycle callback that starts an element with no attributes or body text. |
|
protected Object |
createNode(Object name, Object value)Builder lifecycle callback that starts an element and writes an immediate text body. |
|
protected Object |
createNode(Object name, Map attributes, Object value)Builder lifecycle callback that starts an element, emits attributes and optionally writes text. |
|
protected Object |
createNode(Object name, Map attributes)Builder lifecycle callback that starts an element and emits attributes without body text. |
|
public List<Function<Character, Optional<String>>> |
getAdditionalFilters()Returns extra character replacement filters consulted after the default XML escaping rules. |
|
public boolean |
getDoubleQuotes()Returns true if attribute values are output with
double quotes; false if single quotes are used.
|
|
public MarkupBuilderHelper |
getMkp()Property that may be called from within your builder closure to access helper methods, namely MarkupBuilderHelper.yield, MarkupBuilderHelper.yieldUnescaped, MarkupBuilderHelper.pi, MarkupBuilderHelper.xmlDeclaration and MarkupBuilderHelper.comment. |
|
protected Object |
getName(String methodName)Resolves a builder method name to the element name that should be emitted. |
|
protected IndentPrinter |
getPrinter()Returns the printer used to emit markup. |
|
public boolean |
isEscapeAttributes()Returns the escapeAttributes property value. |
|
public boolean |
isExpandEmptyElements()Whether empty elements are expanded from <tagName/> to <tagName></tagName>. |
|
public boolean |
isOmitEmptyAttributes()Determine whether empty attributes will appear in the produced markup. |
|
public boolean |
isOmitNullAttributes()Determine whether null attributes will appear in the produced markup. |
|
protected void |
nodeCompleted(Object parent, Object node)Builder lifecycle callback invoked when the current node is complete. |
|
protected void |
print(Object node)Writes raw markup fragments or names to the output stream. |
|
public void |
setAdditionalFilters(List<Function<Character, Optional<String>>> additionalFilters)Sets extra character replacement filters consulted after the default XML escaping rules. |
|
public void |
setDoubleQuotes(boolean useDoubleQuotes)Sets whether the builder outputs attribute values in double quotes or single quotes. |
|
public void |
setEscapeAttributes(boolean escapeAttributes)Defaults to true. If set to false then you must escape any special characters within attribute values such as '&', '<', CR/LF, single and double quotes etc. manually as needed. |
|
public void |
setExpandEmptyElements(boolean expandEmptyElements)Whether empty elements are expanded from <tagName/> to <tagName></tagName>. |
|
public void |
setOmitEmptyAttributes(boolean omitEmptyAttributes)Allows empty attributes to be removed from the generated markup. |
|
public void |
setOmitNullAttributes(boolean omitNullAttributes)Allows null attributes to be removed from the generated markup. |
|
protected void |
setParent(Object parent, Object child)Builder lifecycle callback invoked after a child node has been created. |
| Methods inherited from class | Name |
|---|---|
class BuilderSupport |
createNode, createNode, createNode, createNode, doInvokeMethod, getCurrent, getName, invokeMethod, invokeMethod, nodeCompleted, postNodeCompletion, setClosureDelegate, setCurrent, setParent |
class GroovyObjectSupport |
getMetaClass, setMetaClass |
Prints markup to System.out
Sends markup to the given PrintWriter
pw - the PrintWriter to useSends markup to the given Writer but first wrapping it in a PrintWriter
writer - the writer to useSends markup to the given IndentPrinter. Use this option if you want to customize the indent used or provide your own IndentPrinter.
out - the IndentPrinter to useBuilder lifecycle callback that starts an element with no attributes or body text.
name - the node name requested by the builderBuilder lifecycle callback that starts an element and writes an immediate text body.
name - the node name requested by the buildervalue - the text body to emit, or null to leave the element emptyBuilder lifecycle callback that starts an element, emits attributes and optionally writes text.
name - the node name requested by the builderattributes - the attributes to emitvalue - the optional text body to emitBuilder lifecycle callback that starts an element and emits attributes without body text.
name - the node name requested by the builderattributes - the attributes to emitReturns extra character replacement filters consulted after the default XML escaping rules.
null if none are configured Returns true if attribute values are output with
double quotes; false if single quotes are used.
By default, single quotes are used.
Property that may be called from within your builder closure to access helper methods, namely MarkupBuilderHelper.yield, MarkupBuilderHelper.yieldUnescaped, MarkupBuilderHelper.pi, MarkupBuilderHelper.xmlDeclaration and MarkupBuilderHelper.comment.
Resolves a builder method name to the element name that should be emitted. Subclasses may override to translate method names into alternate node names.
methodName - the method name invoked on the builderReturns the printer used to emit markup. Subclasses may override to provide a custom output sink.
Returns the escapeAttributes property value.
Whether empty elements are expanded from <tagName/> to <tagName></tagName>.
true, if empty elements will be represented by an opening tag
followed immediately by a closing tag.Determine whether empty attributes will appear in the produced markup.
true, if empty attributes will be
removed from the resulting markup.Determine whether null attributes will appear in the produced markup.
true, if null attributes will be
removed from the resulting markup.Builder lifecycle callback invoked when the current node is complete.
parent - the parent node markernode - the completed node markerWrites raw markup fragments or names to the output stream. Subclasses may override to customize low-level emission.
node - the value to printSets extra character replacement filters consulted after the default XML escaping rules.
additionalFilters - the additional escaping filters to applySets whether the builder outputs attribute values in double quotes or single quotes.
useDoubleQuotes - If this parameter is true,
double quotes are used; otherwise, single quotes are.Defaults to true. If set to false then you must escape any special characters within attribute values such as '&', '<', CR/LF, single and double quotes etc. manually as needed. The builder will not guard against producing invalid XML when in this mode and the output may not be able to be parsed/round-tripped but it does give you full control when producing for instance HTML output.
escapeAttributes - the new valueWhether empty elements are expanded from <tagName/> to <tagName></tagName>.
expandEmptyElements - if true, empty
elements will be represented by an opening tag
followed immediately by a closing tag.
Defaults to false.Allows empty attributes to be removed from the generated markup.
omitEmptyAttributes - if true, empty
attributes will not be included in the resulting markup.
Defaults to false.Allows null attributes to be removed from the generated markup.
omitNullAttributes - if true, null
attributes will not be included in the resulting markup.
If false null attributes will be included in the
markup as empty strings regardless of the omitEmptyAttribute
setting. Defaults to false.Builder lifecycle callback invoked after a child node has been created. This implementation is a no-op because markup is streamed directly to the printer.
parent - the current parent node markerchild - the newly created child node markerCopyright © 2003-2026 The Apache Software Foundation. All rights reserved.