| 
 | |||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectorg.znerd.xmlenc.XMLOutputter
Stream-based XML outputter. Instances of this class are able to write XML
 output to Writers.
 
standalone attribute is not supported in the XML
        declaration.IllegalStateException will be thrown.
 If any of the writing methods generates an IOException, then
 the state will be set to XMLEventListenerStates.ERROR_STATE and no more output can be
 performed.
 XMLOutputter instances
 write to buffered Writers. This typically improves
 performance on large documents or relatively slow or blocking output
 streams.
 Instances of this class can be cached in a pool to reduce object
 creations. Call reset() (with no arguments) when storing an
 instance in the pool. Use reset(Writer,String) (with 2 arguments)
 to re-initialize the instance after fetching it from the pool.
| Field Summary | |
| static String | DEFAULT_INDENTATIONDefault indentation. | 
| Fields inherited from interface org.znerd.xmlenc.XMLEventListenerStates | 
| AFTER_ROOT_ELEMENT, BEFORE_DTD_DECLARATION, BEFORE_ROOT_ELEMENT, BEFORE_XML_DECLARATION, DOCUMENT_ENDED, ERROR_STATE, START_TAG_OPEN, UNINITIALIZED, WITHIN_ELEMENT | 
| Constructor Summary | |
| XMLOutputter()Constructs a new XMLOutputter. | |
| XMLOutputter(Writer out,
             String encoding)Constructs a new XMLOutputterfor the specifiedWriterand encoding. | |
| XMLOutputter(Writer out,
             XMLEncoder encoder)Constructs a new XMLOutputterfor the specifiedWriterandencoder. | |
| Method Summary | |
|  void | attribute(String name,
          String value)Adds an attribute to the current element. | 
|  void | cdata(String text)Writes a CDATA section. | 
|  void | close()Closes all open elements. | 
|  void | comment(String text)Writes the specified comment. | 
|  void | declaration()Writes the XML declaration. | 
|  void | dtd(String name,
    String publicID,
    String systemID)Writes a document type declaration. | 
|  void | endDocument()Ends the XML output. | 
|  void | endTag()Writes an element end tag. | 
|  String[] | getElementStack()Returns a copy of the element stack. | 
|  int | getElementStackCapacity()Returns the current capacity for the stack of open elements. | 
|  int | getElementStackSize()Returns the current depth of open elements. | 
|  String | getEncoding()Returns the encoding of this outputter. | 
|  String | getIndentation()Returns the string currently used for indentation. | 
|  LineBreak | getLineBreak()Returns the currently used line break. | 
|  char | getQuotationMark()Gets the quotation mark character. | 
|  XMLEventListenerState | getState()Returns the current state of this outputter. | 
|  Writer | getWriter()Returns the output stream this outputter uses. | 
|  boolean | isEscaping()Checks if escaping is currently enabled. | 
|  void | pcdata(char[] ch,
       int start,
       int length)Writes the specified character array as PCDATA. | 
|  void | pcdata(String text)Writes the specified Stringas PCDATA. | 
|  void | pi(String target,
   String instruction)Writes a processing instruction. | 
|  void | reset()Resets this XMLOutputter. | 
|  void | reset(Writer out,
      String encoding)Resets this XMLOutputterand configures it for the
 specified output stream and encoding. | 
|  void | reset(Writer out,
      XMLEncoder encoder)Resets this XMLOutputterand configures it for the
 specified output stream and encoder. | 
|  void | setElementStackCapacity(int newCapacity)Sets the capacity for the stack of open elements. | 
|  void | setEscaping(boolean escapeAmpersands)Sets if ampersands should be escaped. | 
|  void | setIndentation(String indentation)Sets the string to be used for indentation. | 
|  void | setLineBreak(LineBreak lineBreak)Sets the type of line break to use. | 
|  void | setQuotationMark(char c)Sets the quotation mark character to use. | 
|  void | setState(XMLEventListenerState newState,
         String[] newElementStack)Sets the state of this outputter. | 
|  void | startTag(String type)Writes an element start tag. | 
|  void | whitespace(char[] ch,
           int start,
           int length)Writes text from the specified character array as ignorable whitespace. | 
|  void | whitespace(String whitespace)Writes the specified ignorable whitespace. | 
| Methods inherited from class java.lang.Object | 
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Field Detail | 
public static final String DEFAULT_INDENTATION
"", since by
 default no indentation is performed.
| Constructor Detail | 
public XMLOutputter()
XMLOutputter. This sets the state to
 XMLEventListenerStates.UNINITIALIZED.
public XMLOutputter(Writer out,
                    String encoding)
             throws IllegalStateException,
                    IllegalArgumentException,
                    UnsupportedEncodingException
XMLOutputter for the specified
 Writer and encoding. This sets the state to
 XMLEventListenerStates.BEFORE_XML_DECLARATION.
 The encoding will be stored exactly as passed, leaving the case
 intact.
out - the output stream to write to, not null.encoding - the encoding, not null.
IllegalStateException - if getState() != XMLEventListenerStates.UNINITIALIZED &&
             getState() != XMLEventListenerStates.AFTER_ROOT_ELEMENT &&
             getState() != XMLEventListenerStates.ERROR_STATE.
IllegalArgumentException - if out == null || encoding == null.
UnsupportedEncodingException - if the specified encoding is not supported.
public XMLOutputter(Writer out,
                    XMLEncoder encoder)
             throws IllegalStateException,
                    IllegalArgumentException,
                    UnsupportedEncodingException
XMLOutputter for the specified
 Writer and encoder. This sets the state to
 XMLEventListenerStates.BEFORE_XML_DECLARATION.
out - the output stream to write to, not null.encoder - the encoder, not null.
IllegalStateException - if getState() != XMLEventListenerStates.UNINITIALIZED &&
             getState() != XMLEventListenerStates.AFTER_ROOT_ELEMENT &&
             getState() != XMLEventListenerStates.ERROR_STATE.
IllegalArgumentException - if out == null || encoder == null.
UnsupportedEncodingException - if the specified encoding is not supported.| Method Detail | 
public final Writer getWriter()
null if and
    only if the state is XMLEventListenerStates.UNINITIALIZED.public final String getEncoding()
null if and
    only if the state is XMLEventListenerStates.UNINITIALIZED.public void reset()
XMLOutputter. The Writer and the
 encoding will be set to null, the element stack will be
 cleared, the state will be set to XMLEventListenerStates.UNINITIALIZED, the line break
 will be set to LineBreak.NONE and the indentation will be set to
 DEFAULT_INDENTATION (an empty string).
reset in interface XMLEventListener
public final void reset(Writer out,
                        String encoding)
                 throws IllegalArgumentException,
                        UnsupportedEncodingException
XMLOutputter and configures it for the
 specified output stream and encoding. This resets the state to
 XMLEventListenerStates.BEFORE_XML_DECLARATION and clears the stack of open elements.
out - the output stream to write to, not null.encoding - the encoding, not null.
IllegalArgumentException - if out == null || encoding == null.
UnsupportedEncodingException - if the specified encoding is not supported.
public final void reset(Writer out,
                        XMLEncoder encoder)
                 throws IllegalArgumentException,
                        UnsupportedEncodingException
XMLOutputter and configures it for the
 specified output stream and encoder. This resets the state to
 XMLEventListenerStates.BEFORE_XML_DECLARATION and clears the stack of open elements.
out - the output stream to write to, not null.encoder - the encoder, not null.
IllegalArgumentException - if out == null || encoder == null.
UnsupportedEncodingException - if the specified encoding is not supported.
public final void setState(XMLEventListenerState newState,
                           String[] newElementStack)
                    throws IllegalArgumentException
XMLEventListenerStates.UNINITIALIZED as the state is
 equivalent to calling reset().
 Caution: This method can be used to let this class generate invalid
 XML.
setState in interface XMLEventListenernewState - the new state, not null.newElementStack - the new element stack, if newState == START_TAG_OPEN
    || newState == WITHIN_ELEMENT then it should be
    non-null and containing no null elements,
    otherwise it must be null.
IllegalArgumentException - if newState == null
          || (newState == XMLEventListenerStates.START_TAG_OPEN && newElementStack == null)
          || (newState == XMLEventListenerStates.WITHIN_ELEMENT && newElementStack == null)
          || (newState != XMLEventListenerStates.START_TAG_OPEN && newState != XMLEventListenerStates.WITHIN_ELEMENT && newElementStack != null)
          || newElementStack[n] == null (where 0 <= n < newElementStack.length).public final XMLEventListenerState getState()
getState in interface StatefulXMLEventListenernull.public final boolean isEscaping()
'&') are replaced by the
 character entity reference "&". This affects
 PCDATA string printing (pcdata(String) and
 pcdata(char[],int,int)) and attribute value printing
 (attribute(String,String)).
true if escaping is enabled, false
    otherwise.public final void setEscaping(boolean escapeAmpersands)
pcdata(String) and
 pcdata(char[],int,int)) and attribute value printing
 (attribute(String,String)).
 If ampersands are not escaped, then entity references can be
 printed.
escapeAmpersands - true if ampersands should be escaped, false
    otherwise.public final String[] getElementStack()
getElementStackSize().
null if there are no
    elements on the stack.public final int getElementStackSize()
public final int getElementStackCapacity()
getElementStackSize().
public final void setElementStackCapacity(int newCapacity)
                                   throws IllegalArgumentException,
                                          OutOfMemoryError
newCapacity - the new capacity, >= getElementStackSize().
IllegalArgumentException - if newCapacity < getElementStackSize().
OutOfMemoryError - if a new array cannot be allocated; this object will still be usable,
    but the capacity will remain unchanged.
public final void setQuotationMark(char c)
                            throws IllegalArgumentException
'"'.
c - the character to put around attribute values, either
    '\'' or '"'.
IllegalArgumentException - if c != '\'' && c != '"'.public final char getQuotationMark()
'"'.
'\'' or '"'.public final void setLineBreak(LineBreak lineBreak)
LineBreak.NONE, then the indentation is reset to an empty
 string.
lineBreak - the line break to use; specifying null as the argument
    is equivalent to specifying LineBreak.NONE.public final LineBreak getLineBreak()
null.
public final void setIndentation(String indentation)
                          throws IllegalStateException
Only space and tab characters are allowed for the indentation.
indentation - the character string used for indentation, or null if
    the default indentation should be used.
IllegalStateException - if getLineBreak() == LineBreak.NONEIllegalArgumentException - if indentation contains characters that are neither a
    space nor a tab.public final String getIndentation()
null.
public final void declaration()
                       throws IllegalStateException,
                              IOException
"ISO-8859-1", then this
 method will produce the following output:
 <?xml version="1.0" encoding="ISO-8859-1"?>
declaration in interface XMLEventListenerIllegalStateException - if getState() != XMLEventListenerStates.BEFORE_XML_DECLARATION.
IOException - if an I/O error occurs; this will set the state to
    XMLEventListenerStates.ERROR_STATE.
public final void dtd(String name,
                      String publicID,
                      String systemID)
               throws IllegalStateException,
                      IllegalArgumentException,
                      InvalidXMLException,
                      IOException
-//W3C//DTD XHTML 1.0 Transitional//ENhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
dtd in interface XMLEventListenername - the name of the document type, not null.publicID - the public identifier, can be null, but if not, then it
    must match the
    PubidLiteral production
    in the XML 1.0 Specification, when quoted.systemID - the system identifier, can be null, but if not, then
    it must match the
    SystemLiteral production
    in the XML 1.0 Specification, when quoted.
IllegalStateException - if getState() != XMLEventListenerStates.BEFORE_XML_DECLARATION &&
             getState() != XMLEventListenerStates.BEFORE_DTD_DECLARATION.
IllegalArgumentException - if name == null ||
          (publicID != null && systemID == null).
InvalidXMLException - if the specified name does not match the
    Name production
    (see XMLChecker.checkName(String)).
IOException - if an I/O error occurs; this will set the state to
    XMLEventListenerStates.ERROR_STATE.
public final void startTag(String type)
                    throws IllegalStateException,
                           IllegalArgumentException,
                           IOException
startTag in interface XMLEventListenertype - the type of the tag to start, not null.
IllegalStateException - if getState() != XMLEventListenerStates.BEFORE_XML_DECLARATION &&
             getState() != XMLEventListenerStates.BEFORE_DTD_DECLARATION &&
             getState() != XMLEventListenerStates.BEFORE_ROOT_ELEMENT &&
             getState() != XMLEventListenerStates.START_TAG_OPEN &&
             getState() != XMLEventListenerStates.WITHIN_ELEMENT.
IllegalArgumentException - if type == null.
IOException - if an I/O error occurs; this will set the state to
    XMLEventListenerStates.ERROR_STATE.
public final void attribute(String name,
                            String value)
                     throws IllegalStateException,
                            IllegalArgumentException,
                            IOException
attribute in interface XMLEventListenername - the name of the attribute, not null.value - the value of the attribute, not null.
IllegalStateException - if getState() != XMLEventListenerStates.START_TAG_OPEN.
IllegalArgumentException - if name == null || value == null.
IOException - if an I/O error occurs; this will set the state to
    XMLEventListenerStates.ERROR_STATE.
public final void endTag()
                  throws IllegalStateException,
                         IOException
endTag in interface XMLEventListenerIllegalStateException - if getState() != XMLEventListenerStates.START_TAG_OPEN &&
             getState() != XMLEventListenerStates.WITHIN_ELEMENT
IOException - if an I/O error occurs; this will set the state to
    XMLEventListenerStates.ERROR_STATE.
public final void pcdata(String text)
                  throws IllegalStateException,
                         IllegalArgumentException,
                         InvalidXMLException,
                         IOException
String as PCDATA.
pcdata in interface XMLEventListenertext - the PCDATA text to be written, not null.
IllegalStateException - if getState() != XMLEventListenerStates.START_TAG_OPEN &&
             getState() != XMLEventListenerStates.WITHIN_ELEMENT
IllegalArgumentException - if text == null.
InvalidXMLException - if the specified text contains an invalid character.
IOException - if an I/O error occurs; this will set the state to
    XMLEventListenerStates.ERROR_STATE.
public final void pcdata(char[] ch,
                         int start,
                         int length)
                  throws IllegalStateException,
                         IllegalArgumentException,
                         IndexOutOfBoundsException,
                         InvalidXMLException,
                         IOException
pcdata in interface XMLEventListenerch - the character array containing the text to be written, not
    null.start - the start index in the array, must be >= 0 and it must be <
    ch.length.length - the number of characters to read from the array, must be > 0.
IllegalStateException - if getState() != XMLEventListenerStates.START_TAG_OPEN &&
             getState() != XMLEventListenerStates.WITHIN_ELEMENT
IllegalArgumentException - if ch     ==    null
          || start  <  0
          || start  >= ch.length
          || length <  0.
IndexOutOfBoundsException - if start + length > ch.length.
InvalidXMLException - if the specified text contains an invalid character.
IOException - if an I/O error occurs; this will set the state to
    XMLEventListenerStates.ERROR_STATE.
public final void whitespace(String whitespace)
                      throws IllegalStateException,
                             IllegalArgumentException,
                             InvalidXMLException,
                             IOException
XMLEventListenerStates.BEFORE_XML_DECLARATION, then it will be set to
 XMLEventListenerStates.BEFORE_DTD_DECLARATION, otherwise if the state is
 XMLEventListenerStates.START_TAG_OPEN then it will be set to XMLEventListenerStates.WITHIN_ELEMENT,
 otherwise the state will not be changed.
whitespace in interface XMLEventListenerwhitespace - the ignorable whitespace to be written, not null.
IllegalStateException - if getState() != XMLEventListenerStates.BEFORE_XML_DECLARATION &&
             getState() != XMLEventListenerStates.BEFORE_DTD_DECLARATION &&
             getState() != XMLEventListenerStates.BEFORE_ROOT_ELEMENT &&
             getState() != XMLEventListenerStates.START_TAG_OPEN &&
             getState() != XMLEventListenerStates.WITHIN_ELEMENT &&
             getState() != XMLEventListenerStates.AFTER_ROOT_ELEMENT.
IllegalArgumentException - if whitespace == null.
InvalidXMLException - if the specified character string contains a character that is
    invalid as whitespace.
IOException - if an I/O error occurs; this will set the state to
    XMLEventListenerStates.ERROR_STATE.
public final void whitespace(char[] ch,
                             int start,
                             int length)
                      throws IllegalStateException,
                             IllegalArgumentException,
                             IndexOutOfBoundsException,
                             InvalidXMLException,
                             IOException
XMLEventListenerStates.BEFORE_XML_DECLARATION, then it will be set to
 XMLEventListenerStates.BEFORE_DTD_DECLARATION, otherwise if the state is
 XMLEventListenerStates.START_TAG_OPEN then it will be set to XMLEventListenerStates.WITHIN_ELEMENT,
 otherwise the state will not be changed.
whitespace in interface XMLEventListenerch - the character array containing the text to be written, not
    null.start - the start index in the array, must be >= 0 and it must be <
    ch.length.length - the number of characters to read from the array, must be > 0.
IllegalStateException - if getState() != XMLEventListenerStates.BEFORE_XML_DECLARATION &&
             getState() != XMLEventListenerStates.BEFORE_DTD_DECLARATION &&
             getState() != XMLEventListenerStates.BEFORE_ROOT_ELEMENT &&
             getState() != XMLEventListenerStates.START_TAG_OPEN &&
             getState() != XMLEventListenerStates.WITHIN_ELEMENT &&
             getState() != XMLEventListenerStates.AFTER_ROOT_ELEMENT.
IllegalArgumentException - if ch     ==    null
          || start  <  0
          || start  >= ch.length
          || length <  0.
IndexOutOfBoundsException - if start + length > ch.length.
InvalidXMLException - if the specified character string contains a character that is
    invalid as whitespace.
IOException - if an I/O error occurs; this will set the state to
    XMLEventListenerStates.ERROR_STATE.
public final void comment(String text)
                   throws IllegalStateException,
                          IllegalArgumentException,
                          InvalidXMLException,
                          IOException
"--".
 If the state equals XMLEventListenerStates.BEFORE_XML_DECLARATION, then it will be set to
 XMLEventListenerStates.BEFORE_DTD_DECLARATION, otherwise if the state is
 XMLEventListenerStates.START_TAG_OPEN then it will be set to XMLEventListenerStates.WITHIN_ELEMENT,
 otherwise the state will not be changed.
comment in interface XMLEventListenertext - the text for the comment be written, not null.
IllegalStateException - if getState() != XMLEventListenerStates.BEFORE_XML_DECLARATION &&
             getState() != XMLEventListenerStates.BEFORE_DTD_DECLARATION &&
             getState() != XMLEventListenerStates.BEFORE_ROOT_ELEMENT &&
             getState() != XMLEventListenerStates.START_TAG_OPEN &&
             getState() != XMLEventListenerStates.WITHIN_ELEMENT &&
             getState() != XMLEventListenerStates.AFTER_ROOT_ELEMENT.
IllegalArgumentException - if text == null.
InvalidXMLException - if the specified text contains an invalid character.
IOException - if an I/O error occurs; this will set the state to
    XMLEventListenerStates.ERROR_STATE.
public final void pi(String target,
                     String instruction)
              throws IllegalStateException,
                     IllegalArgumentException,
                     IOException
XMLEventListenerStates.BEFORE_XML_DECLARATION, then it will be set to
 XMLEventListenerStates.BEFORE_DTD_DECLARATION, otherwise the state will not be
 changed.
pi in interface XMLEventListenertarget - an identification of the application at which the instruction is
    targeted, not null.instruction - the instruction, can be null, which is equivalent to an
    empty string.
IllegalStateException - if getState() != XMLEventListenerStates.BEFORE_XML_DECLARATION &&
             getState() != XMLEventListenerStates.BEFORE_DTD_DECLARATION &&
             getState() != XMLEventListenerStates.BEFORE_ROOT_ELEMENT &&
             getState() != XMLEventListenerStates.START_TAG_OPEN &&
             getState() != XMLEventListenerStates.WITHIN_ELEMENT &&
             getState() != XMLEventListenerStates.AFTER_ROOT_ELEMENT.
IllegalArgumentException - if target == null.
IOException - if an I/O error occurs; this will set the state to
    XMLEventListenerStates.ERROR_STATE.
public final void cdata(String text)
                 throws IllegalStateException,
                        IllegalArgumentException,
                        IOException
"]]>". This will, however, not be checked by this
 method.
 Left angle brackets and ampersands will be output in their literal
 form; they need not (and cannot) be escaped using
 "<" and "&".
 If the specified string is empty (i.e.
 "".equals(text), then nothing will be output.
 If the specified string contains characters that cannot be printed
 in this encoding, then the result is undefined.
cdata in interface XMLEventListenertext - the contents of the CDATA section, not null.
IllegalStateException - if getState() != XMLEventListenerStates.START_TAG_OPEN &&
             getState() != XMLEventListenerStates.WITHIN_ELEMENT
IllegalArgumentException - if text == null.
IOException - if an I/O error occurs; this will set the state to
    XMLEventListenerStates.ERROR_STATE.
public final void close()
                 throws IllegalStateException,
                        IOException
whitespace(String) method can be called.
 If you would like to flush the output stream as well, call
 endDocument() instead.
IllegalStateException - if getState() != XMLEventListenerStates.START_TAG_OPEN &&
             getState() != XMLEventListenerStates.WITHIN_ELEMENT &&
             getState() != XMLEventListenerStates.AFTER_ROOT_ELEMENT
IOException - if an I/O error occurs; this will set the state to
    XMLEventListenerStates.ERROR_STATE.
public final void endDocument()
                       throws IllegalStateException,
                              IOException
getWriter().flush().
 After calling this method, no more output can be
 written until this outputter is reset.
endDocument in interface XMLEventListenerIllegalStateException - if getState() != XMLEventListenerStates.START_TAG_OPEN &&
             getState() != XMLEventListenerStates.WITHIN_ELEMENT &&
             getState() != XMLEventListenerStates.AFTER_ROOT_ELEMENT.
IOException - if an I/O error occurs; this will set the state to
    XMLEventListenerStates.ERROR_STATE.| 
 | |||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||