XMLOutputter (JDOM v1.1.1)
Date: 2019-01-01

org.jdom.output

## Class XMLOutputter

- java.lang.Object
- - org.jdom.output.XMLOutputter

- All Implemented Interfaces:
    java.lang.Cloneable

      public class XMLOutputter
      extends java.lang.Object
      implements java.lang.Cloneable

  Outputs a JDOM document as a stream of bytes. The outputter 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-normalized output, use ``Format.getCompactFormat()``.

  There are ``output(...)`` methods to print any of the standard JDOM classes, including Document and Element, to either a Writer or an OutputStream. 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 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 ``Format.setEncoding(java.lang.String)`` method. The default encoding is UTF-8.

  The methods ``outputString(...)`` are for convenience only; for top performance you should call one of the ``output(...)`` methods and pass in your own Writer or OutputStream if possible.

  XML declarations are always printed on their own line followed by a line seperator (this doesn't change the semantics of the document). To omit printing of the declaration use ``Format.setOmitDeclaration(boolean)``. To omit printing of the encoding in the declaration use ``Format.setOmitEncoding(boolean)``. Unfortunatly there is currently no way to know the original encoding of the document.

  Empty elements are by default printed as <empty/>, but this can be configured with ``Format.setExpandEmptyElements(boolean)`` to cause them to be expanded to <empty></empty>.

  Version:
    $Revision: 1.117 $, $Date: 2009/07/23 05:54:23 $
  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

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `protected class` | `XMLOutputter.NamespaceStack` Our own null subclass of NamespaceStack.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Format` | `currentFormat`
    `protected static Format` | `preserveFormat`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `XMLOutputter()` This will create an `XMLOutputter` with the default `Format` matching `Format.getRawFormat()`.
    `XMLOutputter(Format format)` This will create an `XMLOutputter` with the specified format characteristics.
    `XMLOutputter(XMLOutputter that)` This will create an `XMLOutputter` with all the options as set in the given `XMLOutputter`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.Object` | `clone()` Returns a copy of this XMLOutputter.
    `java.lang.String` | `escapeAttributeEntities(java.lang.String str)` This will take the pre-defined entities in XML 1.0 and convert their character representation to the appropriate entity reference, suitable for XML attributes.
    `java.lang.String` | `escapeElementEntities(java.lang.String str)` This will take the three pre-defined entities in XML 1.0 (used specifically in XML elements) and convert their character representation to the appropriate entity reference, suitable for XML element content.
    `Format` | `getFormat()` Returns the current format in use by the outputter.
    `void` | `output(CDATA cdata, java.io.OutputStream out)` Print out a ``CDATA`` node.
    `void` | `output(CDATA cdata, java.io.Writer out)` Print out a ``CDATA`` node.
    `void` | `output(Comment comment, java.io.OutputStream out)` Print out a ``Comment``.
    `void` | `output(Comment comment, java.io.Writer out)` Print out a ``Comment``.
    `void` | `output(DocType doctype, java.io.OutputStream out)` Print out the ``DocType``.
    `void` | `output(DocType doctype, java.io.Writer out)` Print out the ``DocType``.
    `void` | `output(Document doc, java.io.OutputStream out)` This will print the `Document` to the given output stream.
    `void` | `output(Document doc, java.io.Writer out)` This will print the `Document` to the given Writer.
    `void` | `output(Element element, java.io.OutputStream out)` Print out an ``Element``, including its ``Attribute``s, and all contained (child) elements, etc.
    `void` | `output(Element element, java.io.Writer out)` Print out an ``Element``, including its ``Attribute``s, and all contained (child) elements, etc.
    `void` | `output(EntityRef entity, java.io.OutputStream out)` Print out a ``EntityRef``.
    `void` | `output(EntityRef entity, java.io.Writer out)` Print out a ``EntityRef``.
    `void` | `output(java.util.List list, java.io.OutputStream out)` This will handle printing out a list of nodes.
    `void` | `output(java.util.List list, java.io.Writer out)` This will handle printing out a list of nodes.
    `void` | `output(ProcessingInstruction pi, java.io.OutputStream out)` Print out a ``ProcessingInstruction``.
    `void` | `output(ProcessingInstruction pi, java.io.Writer out)` Print out a ``ProcessingInstruction``.
    `void` | `output(Text text, java.io.OutputStream out)` Print out a ``Text`` node.
    `void` | `output(Text text, java.io.Writer out)` Print out a ``Text`` node.
    `void` | `outputElementContent(Element element, java.io.OutputStream out)` This will handle printing out an ``Element``'s content only, not including its tag, and attributes.
    `void` | `outputElementContent(Element element, java.io.Writer out)` This will handle printing out an ``Element``'s content only, not including its tag, and attributes.
    `java.lang.String` | `outputString(CDATA cdata)` Return a string representing a CDATA node.
    `java.lang.String` | `outputString(Comment comment)` Return a string representing a comment.
    `java.lang.String` | `outputString(DocType doctype)` Return a string representing a DocType.
    `java.lang.String` | `outputString(Document doc)` Return a string representing a document.
    `java.lang.String` | `outputString(Element element)` Return a string representing an element.
    `java.lang.String` | `outputString(EntityRef entity)` Return a string representing an entity.
    `java.lang.String` | `outputString(java.util.List list)` Return a string representing a list of nodes.
    `java.lang.String` | `outputString(ProcessingInstruction pi)` Return a string representing a PI.
    `java.lang.String` | `outputString(Text text)` Return a string representing a Text node.
    `protected void` | `printAttributes(java.io.Writer out, java.util.List attributes, Element parent, XMLOutputter.NamespaceStack namespaces)` This will handle printing of a ``Attribute`` list.
    `protected void` | `printCDATA(java.io.Writer out, CDATA cdata)` This will handle printing of ``CDATA`` text.
    `protected void` | `printComment(java.io.Writer out, Comment comment)` This will handle printing of comments.
    `protected void` | `printDeclaration(java.io.Writer out, Document doc, java.lang.String encoding)` This will handle printing of the declaration.
    `protected void` | `printDocType(java.io.Writer out, DocType docType)` This handle printing the DOCTYPE declaration if one exists.
    `protected void` | `printElement(java.io.Writer out, Element element, int level, XMLOutputter.NamespaceStack namespaces)` This will handle printing of a ``Element``, its ``Attribute``s, and all contained (child) elements, etc.
    `protected void` | `printEntityRef(java.io.Writer out, EntityRef entity)` This will handle printing a ``EntityRef``.
    `protected void` | `printProcessingInstruction(java.io.Writer out, ProcessingInstruction pi)` This will handle printing of processing instructions.
    `protected void` | `printText(java.io.Writer out, Text text)` This will handle printing of ``Text`` strings.
    `void` | `setFormat(Format newFormat)` Sets the new format logic for the outputter.
    `java.lang.String` | `toString()` Return a string listing of the settings for this XMLOutputter instance.

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### preserveFormat

          protected static final Format preserveFormat

    - #### currentFormat

          protected Format currentFormat

  - ### Constructor Detail

    - #### XMLOutputter

          public XMLOutputter()

      This will create an `XMLOutputter` with the default `Format` matching `Format.getRawFormat()`.

    - #### XMLOutputter

          public XMLOutputter(Format format)

      This will create an `XMLOutputter` with the specified format characteristics. Note the format object is cloned internally before use.

    - #### XMLOutputter

          public XMLOutputter(XMLOutputter that)

      This will create an `XMLOutputter` with all the options as set in the given `XMLOutputter`. Note that `XMLOutputter two = (XMLOutputter)one.clone();` would work equally well.
      Parameters:
        `that` - the XMLOutputter to clone

  - ### Method Detail

    - #### setFormat

          public void setFormat(Format newFormat)

      Sets the new format logic for the outputter. Note the Format object is cloned internally before use.
      Parameters:
        `newFormat` - the format to use for output

    - #### getFormat

          public Format getFormat()

      Returns the current format in use by the outputter. Note the Format object returned is a clone of the one used internally.

    - #### output

          public void output(Document doc,
                             java.io.OutputStream out)
                      throws java.io.IOException

      This will print the `Document` to the given output stream. The characters are printed using the encoding specified in the constructor, or a default of UTF-8.
      Parameters:
        `doc` - `Document` to format.
        `out` - `OutputStream` to use.
      Throws:
        `java.io.IOException` - - if there's any problem writing.

    - #### output

          public void output(DocType doctype,
                             java.io.OutputStream out)
                      throws java.io.IOException

      Print out the ``DocType``.
      Parameters:
        `doctype` - `DocType` to output.
        `out` - `OutputStream` to use.
      Throws:
        `java.io.IOException`

    - #### output

          public void output(Element element,
                             java.io.OutputStream out)
                      throws java.io.IOException

      Print out an ``Element``, including its ``Attribute``s, and all contained (child) elements, etc.
      Parameters:
        `element` - `Element` to output.
        `out` - `Writer` to use.
      Throws:
        `java.io.IOException`

    - #### outputElementContent

          public void outputElementContent(Element element,
                                           java.io.OutputStream out)
                                    throws java.io.IOException

      This will handle printing out an ``Element``'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>".
      Parameters:
        `element` - `Element` to output.
        `out` - `OutputStream` to use.
      Throws:
        `java.io.IOException`

    - #### output

          public void output(java.util.List list,
                             java.io.OutputStream out)
                      throws java.io.IOException

      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>".
      Parameters:
        `list` - `List` of nodes.
        `out` - `OutputStream` to use.
      Throws:
        `java.io.IOException`

    - #### output

          public void output(CDATA cdata,
                             java.io.OutputStream out)
                      throws java.io.IOException

      Print out a ``CDATA`` node.
      Parameters:
        `cdata` - `CDATA` to output.
        `out` - `OutputStream` to use.
      Throws:
        `java.io.IOException`

    - #### output

          public void output(Text text,
                             java.io.OutputStream out)
                      throws java.io.IOException

      Print out a ``Text`` node. Perfoms the necessary entity escaping and whitespace stripping.
      Parameters:
        `text` - `Text` to output.
        `out` - `OutputStream` to use.
      Throws:
        `java.io.IOException`

    - #### output

          public void output(Comment comment,
                             java.io.OutputStream out)
                      throws java.io.IOException

      Print out a ``Comment``.
      Parameters:
        `comment` - `Comment` to output.
        `out` - `OutputStream` to use.
      Throws:
        `java.io.IOException`

    - #### output

          public void output(ProcessingInstruction pi,
                             java.io.OutputStream out)
                      throws java.io.IOException

      Print out a ``ProcessingInstruction``.
      Parameters:
        `pi` - `ProcessingInstruction` to output.
        `out` - `OutputStream` to use.
      Throws:
        `java.io.IOException`

    - #### output

          public void output(EntityRef entity,
                             java.io.OutputStream out)
                      throws java.io.IOException

      Print out a ``EntityRef``.
      Parameters:
        `entity` - `EntityRef` to output.
        `out` - `OutputStream` to use.
      Throws:
        `java.io.IOException`

    - #### output

          public void output(Document doc,
                             java.io.Writer out)
                      throws java.io.IOException

      This will print the `Document` to the given Writer.

      Warning: using your own Writer may cause the outputter's preferred character encoding to be ignored. If you use encodings other than UTF-8, we recommend using the method that takes an OutputStream instead.

      Parameters:
        `doc` - `Document` to format.
        `out` - `Writer` to use.
      Throws:
        `java.io.IOException` - - if there's any problem writing.

    - #### output

          public void output(DocType doctype,
                             java.io.Writer out)
                      throws java.io.IOException

      Print out the ``DocType``.
      Parameters:
        `doctype` - `DocType` to output.
        `out` - `Writer` to use.
      Throws:
        `java.io.IOException`

    - #### output

          public void output(Element element,
                             java.io.Writer out)
                      throws java.io.IOException

      Print out an ``Element``, including its ``Attribute``s, and all contained (child) elements, etc.
      Parameters:
        `element` - `Element` to output.
        `out` - `Writer` to use.
      Throws:
        `java.io.IOException`

    - #### outputElementContent

          public void outputElementContent(Element element,
                                           java.io.Writer out)
                                    throws java.io.IOException

      This will handle printing out an ``Element``'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>".
      Parameters:
        `element` - `Element` to output.
        `out` - `Writer` to use.
      Throws:
        `java.io.IOException`

    - #### output

          public void output(java.util.List list,
                             java.io.Writer out)
                      throws java.io.IOException

      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>".
      Parameters:
        `list` - `List` of nodes.
        `out` - `Writer` to use.
      Throws:
        `java.io.IOException`

    - #### output

          public void output(CDATA cdata,
                             java.io.Writer out)
                      throws java.io.IOException

      Print out a ``CDATA`` node.
      Parameters:
        `cdata` - `CDATA` to output.
        `out` - `Writer` to use.
      Throws:
        `java.io.IOException`

    - #### output

          public void output(Text text,
                             java.io.Writer out)
                      throws java.io.IOException

      Print out a ``Text`` node. Perfoms the necessary entity escaping and whitespace stripping.
      Parameters:
        `text` - `Text` to output.
        `out` - `Writer` to use.
      Throws:
        `java.io.IOException`

    - #### output

          public void output(Comment comment,
                             java.io.Writer out)
                      throws java.io.IOException

      Print out a ``Comment``.
      Parameters:
        `comment` - `Comment` to output.
        `out` - `Writer` to use.
      Throws:
        `java.io.IOException`

    - #### output

          public void output(ProcessingInstruction pi,
                             java.io.Writer out)
                      throws java.io.IOException

      Print out a ``ProcessingInstruction``.
      Parameters:
        `pi` - `ProcessingInstruction` to output.
        `out` - `Writer` to use.
      Throws:
        `java.io.IOException`

    - #### output

          public void output(EntityRef entity,
                             java.io.Writer out)
                      throws java.io.IOException

      Print out a ``EntityRef``.
      Parameters:
        `entity` - `EntityRef` to output.
        `out` - `Writer` to use.
      Throws:
        `java.io.IOException`

    - #### outputString

          public java.lang.String outputString(Document doc)

      Return a string representing a document. Uses an internal StringWriter. Warning: a String is Unicode, which may not match the outputter's specified encoding.
      Parameters:
        `doc` - `Document` to format.

    - #### outputString

          public java.lang.String outputString(DocType doctype)

      Return a string representing a DocType. Warning: a String is Unicode, which may not match the outputter's specified encoding.
      Parameters:
        `doctype` - `DocType` to format.

    - #### outputString

          public java.lang.String outputString(Element element)

      Return a string representing an element. Warning: a String is Unicode, which may not match the outputter's specified encoding.
      Parameters:
        `element` - `Element` to format.

    - #### outputString

          public java.lang.String outputString(java.util.List list)

      Return a string representing a list of nodes. The list is assumed to contain legal JDOM nodes.
      Parameters:
        `list` - `List` to format.

    - #### outputString

          public java.lang.String outputString(CDATA cdata)

      Return a string representing a CDATA node. Warning: a String is Unicode, which may not match the outputter's specified encoding.
      Parameters:
        `cdata` - `CDATA` to format.

    - #### outputString

          public java.lang.String outputString(Text text)

      Return a string representing a Text node. Warning: a String is Unicode, which may not match the outputter's specified encoding.
      Parameters:
        `text` - `Text` to format.

    - #### outputString

          public java.lang.String outputString(Comment comment)

      Return a string representing a comment. Warning: a String is Unicode, which may not match the outputter's specified encoding.
      Parameters:
        `comment` - `Comment` to format.

    - #### outputString

          public java.lang.String outputString(ProcessingInstruction pi)

      Return a string representing a PI. Warning: a String is Unicode, which may not match the outputter's specified encoding.
      Parameters:
        `pi` - `ProcessingInstruction` to format.

    - #### outputString

          public java.lang.String outputString(EntityRef entity)

      Return a string representing an entity. Warning: a String is Unicode, which may not match the outputter's specified encoding.
      Parameters:
        `entity` - `EntityRef` to format.

    - #### printDeclaration

          protected void printDeclaration(java.io.Writer out,
                                          Document doc,
                                          java.lang.String encoding)
                                   throws java.io.IOException

      This will handle printing of the declaration. Assumes XML version 1.0 since we don't directly know.
      Parameters:
        `doc` - `Document` whose declaration to write.
        `out` - `Writer` to use.
        `encoding` - The encoding to add to the declaration
      Throws:
        `java.io.IOException`

    - #### printDocType

          protected void printDocType(java.io.Writer out,
                                      DocType docType)
                               throws java.io.IOException

      This handle printing the DOCTYPE declaration if one exists.
      Parameters:
        `docType` - `Document` whose declaration to write.
        `out` - `Writer` to use.
      Throws:
        `java.io.IOException`

    - #### printComment

          protected void printComment(java.io.Writer out,
                                      Comment comment)
                               throws java.io.IOException

      This will handle printing of comments.
      Parameters:
        `comment` - `Comment` to write.
        `out` - `Writer` to use.
      Throws:
        `java.io.IOException`

    - #### printProcessingInstruction

          protected void printProcessingInstruction(java.io.Writer out,
                                                    ProcessingInstruction pi)
                                             throws java.io.IOException

      This will handle printing of processing instructions.
      Parameters:
        `pi` - `ProcessingInstruction` to write.
        `out` - `Writer` to use.
      Throws:
        `java.io.IOException`

    - #### printEntityRef

          protected void printEntityRef(java.io.Writer out,
                                        EntityRef entity)
                                 throws java.io.IOException

      This will handle printing a ``EntityRef``. Only the entity reference such as `&entity;` will be printed. However, subclasses are free to override this method to print the contents of the entity instead.
      Parameters:
        `entity` - `EntityRef` to output.
        `out` - `Writer` to use.
      Throws:
        `java.io.IOException`

    - #### printCDATA

          protected void printCDATA(java.io.Writer out,
                                    CDATA cdata)
                             throws java.io.IOException

      This will handle printing of ``CDATA`` text.
      Parameters:
        `cdata` - `CDATA` to output.
        `out` - `Writer` to use.
      Throws:
        `java.io.IOException`

    - #### printText

          protected void printText(java.io.Writer out,
                                   Text text)
                            throws java.io.IOException

      This will handle printing of ``Text`` strings.
      Parameters:
        `text` - `Text` to write.
        `out` - `Writer` to use.
      Throws:
        `java.io.IOException`

    - #### printElement

          protected void printElement(java.io.Writer out,
                                      Element element,
                                      int level,
                                      XMLOutputter.NamespaceStack namespaces)
                               throws java.io.IOException

      This will handle printing of a ``Element``, its ``Attribute``s, and all contained (child) elements, etc.
      Parameters:
        `element` - `Element` to output.
        `out` - `Writer` to use.
        `level` - `int` level of indention.
        `namespaces` - `List` stack of Namespaces in scope.
      Throws:
        `java.io.IOException`

    - #### printAttributes

          protected void printAttributes(java.io.Writer out,
                                         java.util.List attributes,
                                         Element parent,
                                         XMLOutputter.NamespaceStack namespaces)
                                  throws java.io.IOException

      This will handle printing of a ``Attribute`` list.
      Parameters:
        `attributes` - `List` of Attribute objcts
        `out` - `Writer` to use
      Throws:
        `java.io.IOException`

    - #### escapeAttributeEntities

          public java.lang.String escapeAttributeEntities(java.lang.String str)

      This will take the pre-defined entities in XML 1.0 and convert their character representation to the appropriate entity reference, suitable for XML attributes. It does not convert the single quote (') because it's not necessary as the outputter writes attributes surrounded by double-quotes.
      Parameters:
        `str` - `String` input to escape.
      Returns:
        `String` with escaped content.
      Throws:
        `java.lang.IllegalArgumentException` - if an entity can not be escaped

    - #### escapeElementEntities

          public java.lang.String escapeElementEntities(java.lang.String str)

      This will take the three pre-defined entities in XML 1.0 (used specifically in XML elements) and convert their character representation to the appropriate entity reference, suitable for XML element content.
      Parameters:
        `str` - `String` input to escape.
      Returns:
        `String` with escaped content.
      Throws:
        `java.lang.IllegalArgumentException` - if an entity can not be escaped

    - #### clone

          public java.lang.Object clone()

      Returns a copy of this XMLOutputter.
      Overrides:
        `clone` in class `java.lang.Object`

    - #### toString

          public java.lang.String toString()

      Return a string listing of the settings for this XMLOutputter instance.
      Overrides:
        `toString` in class `java.lang.Object`
      Returns:
        a string listing the settings for this XMLOutputter instance

Copyright ? 2007 Jason Hunter, Brett McLaughlin. All Rights Reserved.