Class XMLOutputter
- All Implemented Interfaces:
Cloneable
The XMLOutputter can manage many styles of document formatting, from untouched to 'pretty' printed. The default is to output the document content exactly as created, but this can be changed by setting a new Format object:
- For pretty-print output, use
.Format.getPrettyFormat() - For whitespace-normalised output, use
.Format.getCompactFormat() - For unmodified-format output, use
.Format.getRawFormat()
There are methods to print any of
the standard JDOM classes to either a Writer or an OutputStream.
output(...)
Warning: When outputting to a Writer, make sure the writer's encoding
matches the encoding setting in the Format object. This ensures the encoding
in which the content is written (controlled by the Writer configuration)
matches the XML Character escaping as well as the encoding placed in the
document's XML declaration (controlled by the XMLOutputter).
Because a Writer cannot be queried for its encoding, the
information must be passed to the Format manually in its constructor or via
the method. The default encoding is
UTF-8. If the default encoding of the platform is not UTF-8 and a default Format
encoding is used, then there may be incorrectly formed characters in the output.
Format.setEncoding(String)
The methods are for
convenience only; for top performance you should call one of the outputString(...) methods and pass in your own Writer or
OutputStream if possible.
output(...)
All of the output*(...) methods will flush the
destination Writer or OutputStream before returning, and none of them
will close() the destination.
XML declarations are always printed on their own line followed by a line
separator (this doesn't change the semantics of the document). To omit
printing of the declaration use
. To omit printing of the
encoding in the declaration use Format.setOmitDeclaration(boolean).
Unfortunately there is currently no way to know the original encoding of the
document.
Format.setOmitEncoding(boolean)
Empty elements are by default printed as <empty/>, but this can be
configured with to cause
them to be expanded to <empty></empty>.
Format.setExpandEmptyElements(boolean)
If changing the Format settings are insufficient for your output
needs you can customise this XMLOutputter further by setting a different
XMLOutputProcessor with the
setXMLOutputProcessor(XMLOutputProcessor) method or an appropriate
constructor. A fully-enabled Abstract class
AbstractXMLOutputProcessor is available to be further extended to
your needs if all you want to do is tweak some details.
- Author:
- Brett McLaughlin, Jason Hunter, Jason Reid, Wolfgang Werner, Elliotte Rusty Harold, David & Will (from Post Tool Design), Dan Schaffer, Alex Chaffee, Bradley S. Huffman, Rolf Lear
-
Constructor Summary
ConstructorsConstructorDescriptionXMLOutputter(Format format) This will create anXMLOutputterwith the specified format characteristics.XMLOutputter(Format format, XMLOutputProcessor processor) This will create anXMLOutputterwith the specified format characteristics.XMLOutputter(XMLOutputProcessor processor) This will create anXMLOutputterwith the specified XMLOutputProcessor.XMLOutputter(XMLOutputter that) This will create anXMLOutputterwith the same customisations set in the givenXMLOutputterinstance. -
Method Summary
Modifier and TypeMethodDescriptionclone()Returns a cloned copy of this XMLOutputter.Escape any characters in the input string in such a way that the returned value is valid as output in an XML Attribute value.Escape any characters in the input string in such a way that the returned value is valid as output in an XML Element text.Returns the current format in use by the XMLOutputter.Returns the current XMLOutputProcessor instance in use by the XMLOutputter.final voidoutput(List<? extends Content> list, OutputStream out) This will handle printing out a list of nodes.final voidThis will handle printing out a list of nodes.final voidoutput(CDATA cdata, OutputStream out) Print out anode.CDATAfinal voidPrint out anode.CDATAfinal voidoutput(Comment comment, OutputStream out) Print out a.Commentfinal voidPrint out a.Commentfinal voidoutput(DocType doctype, OutputStream out) This will print theto the given OutputStream.DocTypefinal voidPrint out the.DocTypefinal voidoutput(Document doc, OutputStream out) This will print theto the given OutputStream.Documentfinal voidThis will print theDocumentto the given Writer.final voidoutput(Element element, OutputStream out) final voidvoidoutput(EntityRef entity, OutputStream out) Print out a.EntityReffinal voidPrint out an.EntityReffinal voidoutput(ProcessingInstruction pi, OutputStream out) Print out a.ProcessingInstructionfinal voidoutput(ProcessingInstruction pi, Writer out) Print out a.ProcessingInstructionfinal voidoutput(Text text, OutputStream out) Print out anode.Textfinal voidPrint out anode.Textfinal voidoutputElementContent(Element element, OutputStream out) This will handle printing out an's content only, not including its tag, and attributes.Elementfinal voidoutputElementContent(Element element, Writer out) This will handle printing out an's content only, not including its tag, and attributes.Elementfinal StringoutputElementContentString(Element element) This will handle printing out an's content only, not including its tag, and attributes.Elementfinal StringoutputString(List<? extends Content> list) Return a string representing a List ofContentnodes.final StringoutputString(CDATA cdata) Return a string representing aCDATAnode.final StringoutputString(Comment comment) Return a string representing aComment.final StringoutputString(DocType doctype) Return a string representing aDocType.final StringoutputString(Document doc) Return a string representing aDocument.final StringoutputString(Element element) Return a string representing anElement.final StringoutputString(EntityRef entity) Return a string representing anEntityRef.final StringReturn a string representing aProcessingInstruction.final StringoutputString(Text text) Return a string representing aTextnode.voidSets the new format logic for the XMLOutputter.voidsetXMLOutputProcessor(XMLOutputProcessor processor) Sets a new XMLOutputProcessor instance for this XMLOutputter.toString()Return a string listing of the settings for this XMLOutputter instance.
-
Constructor Details
-
XMLOutputter
This will create anXMLOutputterwith the specified format characteristics.Note: the format object is cloned internally before use. If you want to modify the Format after constructing the XMLOutputter you can modify the Format instance
getFormat()returns.- Parameters:
format- The Format instance to use. This instance will be cloned() and as a consequence, changes made to the specified format instance will not be reflected in this XMLOutputter. A null input format indicates that XMLOutputter should use the defaultFormat.getRawFormat()processor- The XMLOutputProcessor to delegate output to. If null the XMLOutputter will use the default XMLOutputProcessor.
-
XMLOutputter
public XMLOutputter() -
XMLOutputter
This will create anXMLOutputterwith the same customisations set in the givenXMLOutputterinstance. Note thatXMLOutputter two = one.clone();would work equally well.- Parameters:
that- the XMLOutputter to clone
-
XMLOutputter
This will create anXMLOutputterwith the specified format characteristics.Note: the format object is cloned internally before use.
- Parameters:
format- The Format instance to use. This instance will be cloned() and as a consequence, changes made to the specified format instance will not be reflected in this XMLOutputter. A null input format indicates that XMLOutputter should use the defaultFormat.getRawFormat()
-
XMLOutputter
This will create anXMLOutputterwith the specified XMLOutputProcessor.- Parameters:
processor- The XMLOutputProcessor to delegate output to. If null the XMLOutputter will use the default XMLOutputProcessor.
-
-
Method Details
-
setFormat
Sets the new format logic for the XMLOutputter. Note the Format object is cloned internally before use.- Parameters:
newFormat- the format to use for subsequent output- See Also:
-
getFormat
Returns the current format in use by the XMLOutputter. Note the Format object returned is not a clone of the one used internally, thus, an XMLOutputter instance is able to have its Format changed by changing the settings on the Format instance returned by this method.- Returns:
- the current Format instance used by this XMLOutputter.
-
getXMLOutputProcessor
Returns the current XMLOutputProcessor instance in use by the XMLOutputter.- Returns:
- the current XMLOutputProcessor instance.
-
setXMLOutputProcessor
Sets a new XMLOutputProcessor instance for this XMLOutputter. Note the processor object is expected to be thread-safe.- Parameters:
processor- the new XMLOutputProcesor to use for output
-
output
This will print theto the given OutputStream. The characters are printed using the encoding specified in the constructor, or a default of UTF-8.Document- Parameters:
doc-Documentto format.out-OutputStreamto use.- Throws:
IOException- if there's any problem writing.NullPointerException- if the specified content is null.
-
output
This will print theto the given OutputStream.DocType- Parameters:
doctype-DocTypeto output.out-OutputStreamto use.- Throws:
IOException- if there's any problem writing.NullPointerException- if the specified content is null.
-
output
- Parameters:
element-Elementto output.out-OutputStreamto use.- Throws:
IOException- if there's any problem writing.NullPointerException- if the specified content is null.
-
outputElementContent
This will handle printing out an's content only, not including its tag, and attributes. This can be useful for printing the content of an element that contains HTML, like "<description>JDOM is <b>fun>!</description>".Element- Parameters:
element-Elementto output.out-OutputStreamto use.- Throws:
IOException- if there's any problem writing.NullPointerException- if the specified content is null.
-
output
This will handle printing out a list of nodes. This can be useful for printing the content of an element that contains HTML, like "<description>JDOM is <b>fun>!</description>".The list is assumed to contain legal JDOM nodes. If other content is coerced on to the list it will cause ClassCastExceptions, and null Lists or null list members will cause NullPointerException.
- Parameters:
list-Listof nodes.out-OutputStreamto use.- Throws:
IOException- if there's any problem writing.ClassCastException- if non-Contentis forced in to the listNullPointerException- if the List is null or contains null members.
-
output
Print out anode.CDATA- Parameters:
cdata-CDATAto output.out-OutputStreamto use.- Throws:
IOException- if there's any problem writing.NullPointerException- if the specified content is null.
-
output
Print out anode. Performs the necessary entity escaping and whitespace stripping.Text- Parameters:
text-Textto output.out-OutputStreamto use.- Throws:
IOException- if there's any problem writing.NullPointerException- if the specified content is null.
-
output
Print out a.Comment- Parameters:
comment-Commentto output.out-OutputStreamto use.- Throws:
IOException- if there's any problem writing.NullPointerException- if the specified content is null.
-
output
Print out a.ProcessingInstruction- Parameters:
pi-ProcessingInstructionto output.out-OutputStreamto use.- Throws:
IOException- if there's any problem writing.NullPointerException- if the specified content is null.
-
output
Print out a.EntityRef- Parameters:
entity-EntityRefto output.out-OutputStreamto use.- Throws:
IOException- if there's any problem writing.NullPointerException- if the specified content is null.
-
outputString
Return a string representing aDocument. Uses an internal StringWriter.Warning: a String is Unicode, which may not match the outputter's specified encoding.
- Parameters:
doc-Documentto format.- Returns:
- the input content formatted as an XML String.
- Throws:
NullPointerException- if the specified content is null.
-
outputString
Return a string representing aDocType.Warning: a String is Unicode, which may not match the outputter's specified encoding.
- Parameters:
doctype-DocTypeto format.- Returns:
- the input content formatted as an XML String.
- Throws:
NullPointerException- if the specified content is null.
-
outputString
Return a string representing anElement.Warning: a String is Unicode, which may not match the outputter's specified encoding.
- Parameters:
element-Elementto format.- Returns:
- the input content formatted as an XML String.
- Throws:
NullPointerException- if the specified content is null.
-
outputString
Return a string representing a List ofContentnodes.
The list is assumed to contain legal JDOM nodes. If other content is coerced on to the list it will cause ClassCastExceptions, and null List members will cause NullPointerException.Warning: a String is Unicode, which may not match the outputter's specified encoding.
- Parameters:
list-Listto format.- Returns:
- the input content formatted as an XML String.
- Throws:
ClassCastException- if non-Contentis forced in to the listNullPointerException- if the List is null or contains null members.
-
outputString
Return a string representing aCDATAnode.Warning: a String is Unicode, which may not match the outputter's specified encoding.
- Parameters:
cdata-CDATAto format.- Returns:
- the input content formatted as an XML String.
- Throws:
NullPointerException- if the specified content is null.
-
outputString
Return a string representing aTextnode.Warning: a String is Unicode, which may not match the outputter's specified encoding.
- Parameters:
text-Textto format.- Returns:
- the input content formatted as an XML String.
- Throws:
NullPointerException- if the specified content is null.
-
outputString
Return a string representing aComment.Warning: a String is Unicode, which may not match the outputter's specified encoding.
- Parameters:
comment-Commentto format.- Returns:
- the input content formatted as an XML String.
- Throws:
NullPointerException- if the specified content is null.
-
outputString
Return a string representing aProcessingInstruction.Warning: a String is Unicode, which may not match the outputter's specified encoding.
- Parameters:
pi-ProcessingInstructionto format.- Returns:
- the input content formatted as an XML String.
- Throws:
NullPointerException- if the specified content is null.
-
outputString
Return a string representing anEntityRef.Warning: a String is Unicode, which may not match the outputter's specified encoding.
- Parameters:
entity-EntityRefto format.- Returns:
- the input content formatted as an XML String.
- Throws:
NullPointerException- if the specified content is null.
-
outputElementContentString
This will handle printing out an's content only, not including its tag, and attributes. This can be useful for printing the content of an element that contains HTML, like "<description>JDOM is <b>fun>!</description>".ElementWarning: a String is Unicode, which may not match the outputter's specified encoding.
- Parameters:
element-Elementto output.- Returns:
- the input content formatted as an XML String.
- Throws:
NullPointerException- if the specified content is null.
-
output
This will print theDocumentto the given Writer.Note: ensure the character encoding of the
outWriter is set the same as theFormat's encoding (see 'warning' onXMLOutputter).- Parameters:
doc-Documentto format.out-Writerto use.- Throws:
IOException- - if there's any problem writing.NullPointerException- if the specified content is null.
-
output
Print out the.DocTypeNote: ensure the character encoding of the
outWriter is set the same as theFormat's encoding (see 'warning' onXMLOutputter).- Parameters:
doctype-DocTypeto output.out-Writerto use.- Throws:
IOException- - if there's any problem writing.NullPointerException- if the specified content is null.
-
output
Print out an, including itsElements, and all contained (child) elements, etc.AttributeNote: ensure the character encoding of the
outWriter is set the same as theFormat's encoding (see 'warning' onXMLOutputter).- Parameters:
element-Elementto output.out-Writerto use.- Throws:
IOException- - if there's any problem writing.NullPointerException- if the specified content is null.
-
outputElementContent
This will handle printing out an's content only, not including its tag, and attributes. This can be useful for printing the content of an element that contains HTML, like "<description>JDOM is <b>fun>!</description>".ElementNote: ensure the character encoding of the
outWriter is set the same as theFormat's encoding (see 'warning' onXMLOutputter).- Parameters:
element-Elementto output.out-Writerto use.- Throws:
IOException- - if there's any problem writing.NullPointerException- if the specified content is null.
-
output
This will handle printing out a list of nodes. This can be useful for printing the content of an element that contains HTML, like "<description>JDOM is <b>fun>!</description>".Note: ensure the character encoding of the
outWriter is set the same as theFormat's encoding (see 'warning' onXMLOutputter).- Parameters:
list-Listof nodes.out-Writerto use.- Throws:
IOException- - if there's any problem writing.NullPointerException- if the specified content is null.
-
output
Print out anode.CDATANote: ensure the character encoding of the
outWriter is set the same as theFormat's encoding (see 'warning' onXMLOutputter).- Parameters:
cdata-CDATAto output.out-Writerto use.- Throws:
IOException- - if there's any problem writing.NullPointerException- if the specified content is null.
-
output
Print out anode. Performs the necessary entity escaping and whitespace stripping.TextNote: ensure the character encoding of the
outWriter is set the same as theFormat's encoding (see 'warning' onXMLOutputter).- Parameters:
text-Textto output.out-Writerto use.- Throws:
IOException- - if there's any problem writing.NullPointerException- if the specified content is null.
-
output
Print out a.CommentNote: ensure the character encoding of the
outWriter is set the same as theFormat's encoding (see 'warning' onXMLOutputter).- Parameters:
comment-Commentto output.out-Writerto use.- Throws:
IOException- - if there's any problem writing.NullPointerException- if the specified content is null.
-
output
Print out a.ProcessingInstructionNote: ensure the character encoding of the
outWriter is set the same as theFormat's encoding (see 'warning' onXMLOutputter).- Parameters:
pi-ProcessingInstructionto output.out-Writerto use.- Throws:
IOException- - if there's any problem writing.NullPointerException- if the specified content is null.
-
output
Print out an.EntityRefNote: ensure the character encoding of the
outWriter is set the same as theFormat's encoding (see 'warning' onXMLOutputter).- Parameters:
entity-EntityRefto output.out-Writerto use.- Throws:
IOException- - if there's any problem writing.NullPointerException- if the specified content is null.
-
escapeAttributeEntities
-
escapeElementEntities
-
clone
Returns a cloned copy of this XMLOutputter. -
toString
-