[Java] Class MarkupBuilder

  • groovy.xml.MarkupBuilder
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 &lt; 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.
  • Note that tab, newline and carriage return characters are escaped within attributes, i.e. will become &#09;, &#10; and &#13; respectively

Nested Class Summary

Nested classes
Modifiers Name Description
enum MarkupBuilder.CharFilter
static class MarkupBuilder.DefaultXmlEscapingFunction

Constructor Summary

Constructors
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.

Methods Summary

Methods
Type Params Return Type Name and description
protected Object createNode(Object name)
protected Object createNode(Object name, Object value)
protected Object createNode(Object name, Map attributes, Object value)
protected Object createNode(Object name, Map attributes)
public List<Function<Character, Optional<String>>> getAdditionalFilters()
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)
protected IndentPrinter getPrinter()
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)
protected void print(Object node)
public void setAdditionalFilters(List<Function<Character, Optional<String>>> additionalFilters)
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)

Inherited Methods Summary

Inherited Methods
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

Constructor Detail

public MarkupBuilder()

Prints markup to System.out

See Also:
IndentPrinter.IndentPrinter

public MarkupBuilder(PrintWriter pw)

Sends markup to the given PrintWriter

Parameters:
pw - the PrintWriter to use
See Also:
IndentPrinter.IndentPrinter

public MarkupBuilder(Writer writer)

Sends markup to the given Writer but first wrapping it in a PrintWriter

Parameters:
writer - the writer to use
See Also:
IndentPrinter.IndentPrinter

public MarkupBuilder(IndentPrinter out)

Sends markup to the given IndentPrinter. Use this option if you want to customize the indent used or provide your own IndentPrinter.

Parameters:
out - the IndentPrinter to use

Method Detail

protected Object createNode(Object name)

protected Object createNode(Object name, Object value)

protected Object createNode(Object name, Map attributes, Object value)

protected Object createNode(Object name, Map attributes)

public List<Function<Character, Optional<String>>> getAdditionalFilters()

public boolean getDoubleQuotes()

Returns true if attribute values are output with double quotes; false if single quotes are used. By default, single quotes are used.

Returns:
true if double quotes are used for attributes

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.

Returns:
this MarkupBuilder

protected Object getName(String methodName)

protected IndentPrinter getPrinter()

public boolean isEscapeAttributes()

Returns the escapeAttributes property value.

Returns:
the escapeAttributes property value
See Also:
setEscapeAttributes(boolean)

public boolean isExpandEmptyElements()

Whether empty elements are expanded from <tagName/> to <tagName></tagName>.

Returns:
true, if empty elements will be represented by an opening tag followed immediately by a closing tag.

public boolean isOmitEmptyAttributes()

Determine whether empty attributes will appear in the produced markup.

Returns:
true, if empty attributes will be removed from the resulting markup.

public boolean isOmitNullAttributes()

Determine whether null attributes will appear in the produced markup.

Returns:
true, if null attributes will be removed from the resulting markup.

protected void nodeCompleted(Object parent, Object node)

protected void print(Object node)

public void setAdditionalFilters(List<Function<Character, Optional<String>>> additionalFilters)

public void setDoubleQuotes(boolean useDoubleQuotes)

Sets whether the builder outputs attribute values in double quotes or single quotes.

Parameters:
useDoubleQuotes - If this parameter is true, double quotes are used; otherwise, single quotes are.

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. 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.

Parameters:
escapeAttributes - the new value

public void setExpandEmptyElements(boolean expandEmptyElements)

Whether empty elements are expanded from <tagName/> to <tagName></tagName>.

Parameters:
expandEmptyElements - if true, empty elements will be represented by an opening tag followed immediately by a closing tag. Defaults to false.

public void setOmitEmptyAttributes(boolean omitEmptyAttributes)

Allows empty attributes to be removed from the generated markup.

Parameters:
omitEmptyAttributes - if true, empty attributes will not be included in the resulting markup. Defaults to false.

public void setOmitNullAttributes(boolean omitNullAttributes)

Allows null attributes to be removed from the generated markup.

Parameters:
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.

protected void setParent(Object parent, Object child)

© 2003-2020 The Apache Software Foundation
Licensed under the Apache license.
https://docs.groovy-lang.org/3.0.7/html/gapi/groovy/xml/MarkupBuilder.html