public class MarkupBuilder extends BuilderSupport
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.Constructor and Description |
---|
MarkupBuilder()
Prints markup to System.out
|
MarkupBuilder(IndentPrinter out)
Sends markup to the given IndentPrinter.
|
MarkupBuilder(java.io.PrintWriter pw)
Sends markup to the given PrintWriter
|
MarkupBuilder(java.io.Writer writer)
Sends markup to the given Writer but first wrapping it in a PrintWriter
|
Modifier and Type | Method and Description |
---|---|
protected java.lang.Object |
createNode(java.lang.Object name) |
protected java.lang.Object |
createNode(java.lang.Object name,
java.util.Map attributes) |
protected java.lang.Object |
createNode(java.lang.Object name,
java.util.Map attributes,
java.lang.Object value) |
protected java.lang.Object |
createNode(java.lang.Object name,
java.lang.Object value) |
boolean |
getDoubleQuotes()
Returns
true if attribute values are output with
double quotes; false if single quotes are used. |
MarkupBuilderHelper |
getMkp()
Property that may be called from within your builder closure to access
helper methods, namely
MarkupBuilderHelper.yield(String) ,
MarkupBuilderHelper.yieldUnescaped(String) ,
MarkupBuilderHelper.pi(Map) ,
MarkupBuilderHelper.xmlDeclaration(Map) and
MarkupBuilderHelper.comment(String) . |
protected java.lang.Object |
getName(java.lang.String methodName)
A hook to allow names to be converted into some other object
such as a QName in XML or ObjectName in JMX.
|
protected IndentPrinter |
getPrinter() |
boolean |
isEscapeAttributes()
Returns the escapeAttributes property value.
|
boolean |
isExpandEmptyElements()
Whether empty elements are expanded from <tagName/> to <tagName></tagName>.
|
boolean |
isOmitEmptyAttributes()
Determine whether empty attributes will appear in the produced markup.
|
boolean |
isOmitNullAttributes()
Determine whether null attributes will appear in the produced markup.
|
protected void |
nodeCompleted(java.lang.Object parent,
java.lang.Object node)
A hook to allow nodes to be processed once they have had all of their
children applied.
|
protected void |
print(java.lang.Object node) |
void |
setDoubleQuotes(boolean useDoubleQuotes)
Sets whether the builder outputs attribute values in double
quotes or single quotes.
|
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.
|
void |
setExpandEmptyElements(boolean expandEmptyElements)
Whether empty elements are expanded from <tagName/> to <tagName></tagName>.
|
void |
setOmitEmptyAttributes(boolean omitEmptyAttributes)
Allows empty attributes to be removed from the generated markup.
|
void |
setOmitNullAttributes(boolean omitNullAttributes)
Allows null attributes to be removed from the generated markup.
|
protected void |
setParent(java.lang.Object parent,
java.lang.Object child) |
doInvokeMethod, getCurrent, invokeMethod, invokeMethod, postNodeCompletion, setClosureDelegate, setCurrent
getMetaClass, getProperty, setMetaClass, setProperty
public MarkupBuilder()
IndentPrinter.IndentPrinter()
public MarkupBuilder(java.io.PrintWriter pw)
pw
- the PrintWriter to useIndentPrinter.IndentPrinter(Writer)
public MarkupBuilder(java.io.Writer writer)
writer
- the writer to useIndentPrinter.IndentPrinter(Writer)
public MarkupBuilder(IndentPrinter out)
out
- the IndentPrinter to usepublic boolean isEscapeAttributes()
setEscapeAttributes(boolean)
public void setEscapeAttributes(boolean escapeAttributes)
escapeAttributes
- the new valuepublic boolean getDoubleQuotes()
true
if attribute values are output with
double quotes; false
if single quotes are used.
By default, single quotes are used.public void setDoubleQuotes(boolean useDoubleQuotes)
useDoubleQuotes
- If this parameter is true
,
double quotes are used; otherwise, single quotes are.public boolean isOmitNullAttributes()
true
, if null attributes will be
removed from the resulting markup.public void setOmitNullAttributes(boolean omitNullAttributes)
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
.public boolean isOmitEmptyAttributes()
true
, if empty attributes will be
removed from the resulting markup.public void setOmitEmptyAttributes(boolean omitEmptyAttributes)
omitEmptyAttributes
- if true
, empty
attributes will not be included in the resulting markup.
Defaults to false
.public boolean isExpandEmptyElements()
true
, if empty elements will be represented by an opening tag
followed immediately by a closing tag.public void setExpandEmptyElements(boolean expandEmptyElements)
expandEmptyElements
- if true
, empty
elements will be represented by an opening tag
followed immediately by a closing tag.
Defaults to false
.protected IndentPrinter getPrinter()
protected void setParent(java.lang.Object parent, java.lang.Object child)
setParent
in class BuilderSupport
public MarkupBuilderHelper getMkp()
MarkupBuilderHelper.yield(String)
,
MarkupBuilderHelper.yieldUnescaped(String)
,
MarkupBuilderHelper.pi(Map)
,
MarkupBuilderHelper.xmlDeclaration(Map)
and
MarkupBuilderHelper.comment(String)
.protected java.lang.Object createNode(java.lang.Object name)
createNode
in class BuilderSupport
protected java.lang.Object createNode(java.lang.Object name, java.lang.Object value)
createNode
in class BuilderSupport
protected java.lang.Object createNode(java.lang.Object name, java.util.Map attributes, java.lang.Object value)
createNode
in class BuilderSupport
protected java.lang.Object createNode(java.lang.Object name, java.util.Map attributes)
createNode
in class BuilderSupport
protected void nodeCompleted(java.lang.Object parent, java.lang.Object node)
BuilderSupport
nodeCompleted
in class BuilderSupport
parent
- the parent of the node being processednode
- the current node being processedprotected void print(java.lang.Object node)
protected java.lang.Object getName(java.lang.String methodName)
BuilderSupport
getName
in class BuilderSupport
methodName
- the name of the desired method