Package groovy.xml
Class XmlNodePrinter
java.lang.Object
groovy.xml.XmlNodePrinter
Prints a
groovy.util.Node (as used with XmlParser) including all children in XML format.
Typical usage:
def xml = '<html><head><title>Title</title></head><body><h1>Header</h1></body></html>' def root = new XmlParser().parseText(xml) new XmlNodePrinter(preserveWhitespace:true).print(root.body[0])which when run produces this on stdout (or use your own
PrintWriter to direct elsewhere):
<body> <h1>Header</h1> </body>
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classTracks namespace declarations already emitted while printing a subtree. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final IndentPrinterPrinter receiving serialized XML output. -
Constructor Summary
ConstructorsConstructorDescriptionCreates a printer that writes to standard output using default formatting.Creates a printer that writes to the supplied indent printer using double quotes for attributes.XmlNodePrinter(IndentPrinter out, String quote) Creates a printer that writes to the supplied indent printer using the supplied attribute quote.Creates a printer that writes to the supplied writer using two-space indentation and double quotes.XmlNodePrinter(PrintWriter out, String indent) Creates a printer that writes to the supplied writer using the supplied indentation string.XmlNodePrinter(PrintWriter out, String indent, String quote) Creates a printer that writes to the supplied writer using the supplied indentation and attribute quote. -
Method Summary
Modifier and TypeMethodDescriptionprotected StringResolves the printable name for a node, qualified name or plain string.getQuote()Get Quote to use when printing attributes.booleanWhether empty elements are expanded from <tagName/> to <tagName></tagName>.booleanCheck if namespace handling is enabled.booleanCheck if whitespace preservation is enabled.voidPrints the supplied node and its descendants.protected voidprint(Node node, XmlNodePrinter.NamespaceContext ctx) Prints a node using the supplied namespace context.protected voidPrints any indentation required before the current line.protected voidTerminates the current line without a trailing comment.protected voidprintLineEnd(String comment) Terminates the current line and optionally appends an XML comment.protected voidprintList(List list, XmlNodePrinter.NamespaceContext ctx) Prints the contents of a node value list.protected voidprintName(Node node, XmlNodePrinter.NamespaceContext ctx, boolean begin, boolean preserve) Prints an opening or closing tag for the supplied node.protected voidprintNameAttributes(Map attributes, XmlNodePrinter.NamespaceContext ctx) Prints the attributes for the current element.protected voidprintNamespace(Object object, XmlNodePrinter.NamespaceContext ctx) Prints any namespace declaration required by the supplied node or qualified name.protected voidprintSimpleItem(Object value) Prints a simple non-node value, escaping it as element content.protected booleanprintSpecialNode(Node node) Hook for subclasses to intercept node printing.voidsetExpandEmptyElements(boolean expandEmptyElements) Whether empty elements are expanded from <tagName/> to <tagName></tagName>.voidsetNamespaceAware(boolean namespaceAware) Enable and/or disable namespace handling.voidsetPreserveWhitespace(boolean preserveWhitespace) Enable and/or disable preservation of whitespace.voidSet Quote to use when printing attributes.
-
Field Details
-
out
Printer receiving serialized XML output.
-
-
Constructor Details
-
XmlNodePrinter
Creates a printer that writes to the supplied writer using two-space indentation and double quotes.- Parameters:
out- the writer receiving the serialized XML
-
XmlNodePrinter
Creates a printer that writes to the supplied writer using the supplied indentation string.- Parameters:
out- the writer receiving the serialized XMLindent- the indentation unit to use
-
XmlNodePrinter
Creates a printer that writes to the supplied writer using the supplied indentation and attribute quote.- Parameters:
out- the writer receiving the serialized XMLindent- the indentation unit to usequote- the quote string to use around attribute values
-
XmlNodePrinter
Creates a printer that writes to the supplied indent printer using double quotes for attributes.- Parameters:
out- the indent printer receiving the serialized XML
-
XmlNodePrinter
Creates a printer that writes to the supplied indent printer using the supplied attribute quote.- Parameters:
out- the indent printer receiving the serialized XMLquote- the quote string to use around attribute values
-
XmlNodePrinter
public XmlNodePrinter()Creates a printer that writes to standard output using default formatting.
-
-
Method Details
-
print
Prints the supplied node and its descendants.- Parameters:
node- the root node to serialize
-
isNamespaceAware
public boolean isNamespaceAware()Check if namespace handling is enabled. Defaults totrue.- Returns:
- true if namespace handling is enabled
-
setNamespaceAware
public void setNamespaceAware(boolean namespaceAware) Enable and/or disable namespace handling.- Parameters:
namespaceAware- the new desired value
-
isPreserveWhitespace
public boolean isPreserveWhitespace()Check if whitespace preservation is enabled. Defaults tofalse.- Returns:
- true if whitespaces are honoured when printing simple text nodes
-
setPreserveWhitespace
public void setPreserveWhitespace(boolean preserveWhitespace) Enable and/or disable preservation of whitespace.- Parameters:
preserveWhitespace- the new desired value
-
getQuote
Get Quote to use when printing attributes.- Returns:
- the quote character
-
setQuote
Set Quote to use when printing attributes.- Parameters:
quote- the quote character
-
isExpandEmptyElements
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.
-
setExpandEmptyElements
public void setExpandEmptyElements(boolean expandEmptyElements) Whether empty elements are expanded from <tagName/> to <tagName></tagName>.- Parameters:
expandEmptyElements- iftrue, empty elements will be represented by an opening tag followed immediately by a closing tag. Defaults tofalse.
-
print
Prints a node using the supplied namespace context. Subclasses may override to customize node serialization while reusing the helper methods in this class.- Parameters:
node- the node to serializectx- the namespace context active for this node
-
printLineBegin
protected void printLineBegin()Prints any indentation required before the current line. -
printLineEnd
protected void printLineEnd()Terminates the current line without a trailing comment. -
printLineEnd
Terminates the current line and optionally appends an XML comment.- Parameters:
comment- the comment text to append, ornullfor none
-
printList
Prints the contents of a node value list.- Parameters:
list- the node contents to printctx- the namespace context to propagate to child nodes
-
printSimpleItem
Prints a simple non-node value, escaping it as element content.- Parameters:
value- the value to print
-
printName
protected void printName(Node node, XmlNodePrinter.NamespaceContext ctx, boolean begin, boolean preserve) Prints an opening or closing tag for the supplied node.- Parameters:
node- the node whose name and attributes should be printedctx- the namespace context active for this nodebegin-trueto print the opening tag,falsefor the closing tagpreserve- whether surrounding whitespace should be preserved
-
printSpecialNode
Hook for subclasses to intercept node printing.- Parameters:
node- the node about to be printed- Returns:
trueif the node was handled completely and normal printing should stop
-
printNamespace
Prints any namespace declaration required by the supplied node or qualified name.- Parameters:
object- the node or qualified name whose namespace should be declaredctx- the namespace context tracking declarations already emitted
-
printNameAttributes
Prints the attributes for the current element.- Parameters:
attributes- the attributes to printctx- the namespace context used for namespace-aware attribute names
-
getName
Resolves the printable name for a node, qualified name or plain string. Subclasses may override to customize name rendering.- Parameters:
object- the object representing a node name- Returns:
- the printable name
-