org.apache.xml.serializer

## Class ToTextStream

- java.lang.Object
- - org.apache.xml.serializer.SerializerBase
  - - org.apache.xml.serializer.ToStream
    - - org.apache.xml.serializer.ToTextStream

- All Implemented Interfaces:
    DOMSerializer, ExtendedContentHandler, ExtendedLexicalHandler, SerializationHandler, Serializer, org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.ErrorHandler, org.xml.sax.ext.DeclHandler, org.xml.sax.ext.LexicalHandler

      public class ToTextStream
      extends ToStream

  This class is not a public API. It is only public because it is used in other packages. This class converts SAX or SAX-like calls to a serialized document for xsl:output method of "text".
  Usage:
    **For internal use only**

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `CDATA_CONTINUE` To insert ]]> in a CDATA section by ending the last CDATA section with ]] and starting the next CDATA section with >
    `static java.lang.String` | `CDATA_DELIMITER_CLOSE` The constant "]]>"
    `static java.lang.String` | `CDATA_DELIMITER_OPEN`
    `static java.lang.String` | `DEFAULT_SAX_SERIALIZER`
    `static java.lang.String` | `EMPTYSTRING`
    `static java.lang.String` | `ENTITY_AMP`
    `static java.lang.String` | `ENTITY_CRLF`
    `static java.lang.String` | `ENTITY_GT`
    `static java.lang.String` | `ENTITY_LT`
    `static java.lang.String` | `ENTITY_QUOT`
    `static java.lang.String` | `XML_PREFIX`
    `static java.lang.String` | `XMLNS_PREFIX`
    `static java.lang.String` | `XMLNS_URI`
    `static java.lang.String` | `XMLVERSION10`
    `static java.lang.String` | `XMLVERSION11` Define the XML version.

    - ### Fields inherited from class org.apache.xml.serializer.SerializerBase

      `PKG_NAME, PKG_PATH`

    - ### Fields inherited from interface org.apache.xml.serializer.ExtendedContentHandler

      `HTML_ATTREMPTY, HTML_ATTRURL, NO_BAD_CHARS`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ToTextStream()` Default constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addAttribute(java.lang.String name, java.lang.String value)` From XSLTC
    `void` | `addAttribute(java.lang.String uri, java.lang.String localName, java.lang.String rawName, java.lang.String type, java.lang.String value, boolean XSLAttribute)` Adds the given attribute to the set of collected attributes , but only if there is a currently open element.
    `void` | `addUniqueAttribute(java.lang.String qName, java.lang.String value, int flags)` Add a unique attribute
    `void` | `cdata(char[] ch, int start, int length)` Receive notification of cdata.
    `void` | `characters(char[] ch, int start, int length)` Receive notification of character data.
    `void` | `characters(java.lang.String characters)` From XSLTC
    `void` | `charactersRaw(char[] ch, int start, int length)` If available, when the disable-output-escaping attribute is used, output raw text without escaping.
    `void` | `comment(char[] ch, int start, int length)` Report an XML comment anywhere in the document.
    `void` | `comment(java.lang.String data)` Called when a Comment is to be constructed.
    `void` | `endCDATA()` Report the end of a CDATA section.
    `void` | `endDocument()` Receive notification of the end of a document.
    `void` | `endElement(java.lang.String elemName)` Receive notification of the end of an element.
    `void` | `endElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String name)` Receive notification of the end of an element.
    `void` | `entityReference(java.lang.String name)` Receive notivication of a entityReference.
    `void` | `flushPending()` This method flushes any pending events, which can be startDocument() closing the opening tag of an element, or closing an open CDATA section.
    `void` | `ignorableWhitespace(char[] ch, int start, int length)` Receive notification of ignorable whitespace in element content.
    `void` | `namespaceAfterStartElement(java.lang.String prefix, java.lang.String uri)` This method is used when a prefix/uri namespace mapping is indicated after the element was started with a startElement() and before and endElement().
    `void` | `processingInstruction(java.lang.String target, java.lang.String data)` Receive notification of a processing instruction.
    `void` | `startElement(java.lang.String elementNamespaceURI, java.lang.String elementLocalName, java.lang.String elementName)` From XSLTC
    `void` | `startElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String name, org.xml.sax.Attributes atts)` Receive notification of the beginning of an element.
    `void` | `startPrefixMapping(java.lang.String prefix, java.lang.String uri)` Begin the scope of a prefix-URI Namespace mapping just before another element is about to start.
    `boolean` | `startPrefixMapping(java.lang.String prefix, java.lang.String uri, boolean shouldFlush)` Handle a prefix/uri mapping, which is associated with a startElement() that is soon to follow.

    - ### Methods inherited from class org.apache.xml.serializer.ToStream

      `addAttributeAlways, addCdataSectionElements, attributeDecl, elementDecl, endDTD, endNonEscaping, endPrefixMapping, externalEntityDecl, getIndentAmount, getOutputFormat, getOutputStream, getWriter, internalEntityDecl, notationDecl, processAttributes, reset, serialize, setCdataSectionElements, setContentHandler, setDTDEntityExpansion, setEncoding, setEscaping, setIndentAmount, setLineSepUse, setNewLine, setOutputFormat, setOutputStream, setTransformer, setWriter, skippedEntity, startCDATA, startDTD, startElement, startEntity, startNonEscaping, unparsedEntityDecl, writeAttrString`

    - ### Methods inherited from class org.apache.xml.serializer.SerializerBase

      `addAttribute, addAttributes, addXSLAttribute, asContentHandler, asDOM3Serializer, asDOMSerializer, characters, close, documentIsEmpty, endEntity, error, fatalError, fireEndEntity, getDoctypePublic, getDoctypeSystem, getEncoding, getIndent, getMediaType, getNamespaceMappings, getNamespaceURI, getNamespaceURIFromPrefix, getOmitXMLDeclaration, getOutputProperty, getOutputPropertyDefault, getOutputPropertyNonDefault, getPrefix, getStandalone, getTransformer, getVersion, setDoctype, setDoctypePublic, setDoctypeSystem, setDocumentLocator, setIndent, setMediaType, setNamespaceMappings, setOmitXMLDeclaration, setOutputProperty, setOutputPropertyDefault, setSourceLocator, setStandalone, setVersion, startDocument, warning`

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

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

- - ### Field Detail

    - #### CDATA_CONTINUE

          public static final java.lang.String CDATA_CONTINUE

      To insert ]]> in a CDATA section by ending the last CDATA section with ]] and starting the next CDATA section with >
      See Also:
        Constant Field Values

    - #### CDATA_DELIMITER_CLOSE

          public static final java.lang.String CDATA_DELIMITER_CLOSE

      The constant "]]>"
      See Also:
        Constant Field Values

    - #### CDATA_DELIMITER_OPEN

          public static final java.lang.String CDATA_DELIMITER_OPEN

      See Also:
        Constant Field Values

    - #### EMPTYSTRING

          public static final java.lang.String EMPTYSTRING

      See Also:
        Constant Field Values

    - #### ENTITY_AMP

          public static final java.lang.String ENTITY_AMP

      See Also:
        Constant Field Values

    - #### ENTITY_CRLF

          public static final java.lang.String ENTITY_CRLF

      See Also:
        Constant Field Values

    - #### ENTITY_GT

          public static final java.lang.String ENTITY_GT

      See Also:
        Constant Field Values

    - #### ENTITY_LT

          public static final java.lang.String ENTITY_LT

      See Also:
        Constant Field Values

    - #### ENTITY_QUOT

          public static final java.lang.String ENTITY_QUOT

      See Also:
        Constant Field Values

    - #### XML_PREFIX

          public static final java.lang.String XML_PREFIX

      See Also:
        Constant Field Values

    - #### XMLNS_PREFIX

          public static final java.lang.String XMLNS_PREFIX

      See Also:
        Constant Field Values

    - #### XMLNS_URI

          public static final java.lang.String XMLNS_URI

      See Also:
        Constant Field Values

    - #### DEFAULT_SAX_SERIALIZER

          public static final java.lang.String DEFAULT_SAX_SERIALIZER

    - #### XMLVERSION11

          public static final java.lang.String XMLVERSION11

      Define the XML version.
      See Also:
        Constant Field Values

    - #### XMLVERSION10

          public static final java.lang.String XMLVERSION10

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### ToTextStream

          public ToTextStream()

      Default constructor.

  - ### Method Detail

    - #### endDocument

          public void endDocument()
                           throws org.xml.sax.SAXException

      Receive notification of the end of a document.

      The SAX parser will invoke this method only once, and it will be the last method invoked during the parse. The parser shall not invoke this method until it has either abandoned parsing (because of an unrecoverable error) or reached the end of input.

      Throws:
        `org.xml.sax.SAXException` - Any SAX exception, possibly wrapping another exception.
        `org.xml.sax.SAXException`

    - #### startElement

          public void startElement(java.lang.String namespaceURI,
                                   java.lang.String localName,
                                   java.lang.String name,
                                   org.xml.sax.Attributes atts)
                            throws org.xml.sax.SAXException

      Receive notification of the beginning of an element.

      The Parser will invoke this method at the beginning of every element in the XML document; there will be a corresponding endElement() event for every startElement() event (even when the element is empty). All of the element's content will be reported, in order, before the corresponding endElement() event.

      If the element name has a namespace prefix, the prefix will still be attached. Note that the attribute list provided will contain only attributes with explicit values (specified or defaulted): #IMPLIED attributes will be omitted.

      Specified by:
        `startElement` in interface `org.xml.sax.ContentHandler`
      Overrides:
        `startElement` in class `ToStream`
      Parameters:
        `namespaceURI` - The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.
        `localName` - The local name (without prefix), or the empty string if Namespace processing is not being performed.
        `name` - The qualified name (with prefix), or the empty string if qualified names are not available.
        `atts` - The attributes attached to the element, if any.
      Throws:
        `org.xml.sax.SAXException` - Any SAX exception, possibly wrapping another exception.
        `org.xml.sax.SAXException`
      See Also:
        `endElement(java.lang.String, java.lang.String, java.lang.String)`, `AttributeList`

    - #### endElement

          public void endElement(java.lang.String namespaceURI,
                                 java.lang.String localName,
                                 java.lang.String name)
                          throws org.xml.sax.SAXException

      Receive notification of the end of an element.

      The SAX parser will invoke this method at the end of every element in the XML document; there will be a corresponding startElement() event for every endElement() event (even when the element is empty).

      If the element name has a namespace prefix, the prefix will still be attached to the name.

      Specified by:
        `endElement` in interface `org.xml.sax.ContentHandler`
      Overrides:
        `endElement` in class `ToStream`
      Parameters:
        `namespaceURI` - The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.
        `localName` - The local name (without prefix), or the empty string if Namespace processing is not being performed.
        `name` - The qualified name (with prefix), or the empty string if qualified names are not available.
      Throws:
        `org.xml.sax.SAXException` - Any SAX exception, possibly wrapping another exception.
        `org.xml.sax.SAXException`

    - #### characters

          public void characters(char[] ch,
                                 int start,
                                 int length)
                          throws org.xml.sax.SAXException

      Receive notification of character data.

      The Parser will call this method to report each chunk of character data. SAX parsers may return all contiguous character data in a single chunk, or they may split it into several chunks; however, all of the characters in any single event must come from the same external entity, so that the Locator provides useful information.

      The application must not attempt to read from the array outside of the specified range.

      Note that some parsers will report whitespace using the ignorableWhitespace() method rather than this one (validating parsers must do so).

      Specified by:
        `characters` in interface `org.xml.sax.ContentHandler`
      Overrides:
        `characters` in class `ToStream`
      Parameters:
        `ch` - The characters from the XML document.
        `start` - The start position in the array.
        `length` - The number of characters to read from the array.
      Throws:
        `org.xml.sax.SAXException` - Any SAX exception, possibly wrapping another exception.
      See Also:
        `ignorableWhitespace(char[], int, int)`, `Locator`

    - #### charactersRaw

          public void charactersRaw(char[] ch,
                                    int start,
                                    int length)
                             throws org.xml.sax.SAXException

      If available, when the disable-output-escaping attribute is used, output raw text without escaping.
      Parameters:
        `ch` - The characters from the XML document.
        `start` - The start position in the array.
        `length` - The number of characters to read from the array.
      Throws:
        `org.xml.sax.SAXException` - Any SAX exception, possibly wrapping another exception.

    - #### cdata

          public void cdata(char[] ch,
                            int start,
                            int length)
                     throws org.xml.sax.SAXException

      Receive notification of cdata.

      The Parser will call this method to report each chunk of character data. SAX parsers may return all contiguous character data in a single chunk, or they may split it into several chunks; however, all of the characters in any single event must come from the same external entity, so that the Locator provides useful information.

      The application must not attempt to read from the array outside of the specified range.

      Note that some parsers will report whitespace using the ignorableWhitespace() method rather than this one (validating parsers must do so).

      Parameters:
        `ch` - The characters from the XML document.
        `start` - The start position in the array.
        `length` - The number of characters to read from the array.
      Throws:
        `org.xml.sax.SAXException` - Any SAX exception, possibly wrapping another exception.
      See Also:
        `ignorableWhitespace(char[], int, int)`, `Locator`

    - #### ignorableWhitespace

          public void ignorableWhitespace(char[] ch,
                                          int start,
                                          int length)
                                   throws org.xml.sax.SAXException

      Receive notification of ignorable whitespace in element content.

      Validating Parsers must use this method to report each chunk of ignorable whitespace (see the W3C XML 1.0 recommendation, section 2.10): non-validating parsers may also use this method if they are capable of parsing and using content models.

      SAX parsers may return all contiguous whitespace in a single chunk, or they may split it into several chunks; however, all of the characters in any single event must come from the same external entity, so that the Locator provides useful information.

      The application must not attempt to read from the array outside of the specified range.

      Specified by:
        `ignorableWhitespace` in interface `org.xml.sax.ContentHandler`
      Overrides:
        `ignorableWhitespace` in class `ToStream`
      Parameters:
        `ch` - The characters from the XML document.
        `start` - The start position in the array.
        `length` - The number of characters to read from the array.
      Throws:
        `org.xml.sax.SAXException` - Any SAX exception, possibly wrapping another exception.
        `org.xml.sax.SAXException`
      See Also:
        `characters(char[], int, int)`

    - #### processingInstruction

          public void processingInstruction(java.lang.String target,
                                            java.lang.String data)
                                     throws org.xml.sax.SAXException

      Receive notification of a processing instruction.

      The Parser will invoke this method once for each processing instruction found: note that processing instructions may occur before or after the main document element.

      A SAX parser should never report an XML declaration (XML 1.0, section 2.8) or a text declaration (XML 1.0, section 4.3.1) using this method.

      Parameters:
        `target` - The processing instruction target.
        `data` - The processing instruction data, or null if none was supplied.
      Throws:
        `org.xml.sax.SAXException` - Any SAX exception, possibly wrapping another exception.
        `org.xml.sax.SAXException`

    - #### comment

          public void comment(java.lang.String data)
                       throws org.xml.sax.SAXException

      Called when a Comment is to be constructed. Note that Xalan will normally invoke the other version of this method. %REVIEW% In fact, is this one ever needed, or was it a mistake?
      Specified by:
        `comment` in interface `ExtendedLexicalHandler`
      Overrides:
        `comment` in class `SerializerBase`
      Parameters:
        `data` - The comment data.
      Throws:
        `org.xml.sax.SAXException` - Any SAX exception, possibly wrapping another exception.
      See Also:
        `ExtendedLexicalHandler.comment(String)`

    - #### comment

          public void comment(char[] ch,
                              int start,
                              int length)
                       throws org.xml.sax.SAXException

      Report an XML comment anywhere in the document. This callback will be used for comments inside or outside the document element, including comments in the external DTD subset (if read).
      Specified by:
        `comment` in interface `org.xml.sax.ext.LexicalHandler`
      Overrides:
        `comment` in class `ToStream`
      Parameters:
        `ch` - An array holding the characters in the comment.
        `start` - The starting position in the array.
        `length` - The number of characters to use from the array.
      Throws:
        `org.xml.sax.SAXException` - The application may raise an exception.

    - #### entityReference

          public void entityReference(java.lang.String name)
                               throws org.xml.sax.SAXException

      Receive notivication of a entityReference.
      Specified by:
        `entityReference` in interface `ExtendedContentHandler`
      Overrides:
        `entityReference` in class `SerializerBase`
      Parameters:
        `name` - non-null reference to the name of the entity.
      Throws:
        `org.xml.sax.SAXException`

    - #### addAttribute

          public void addAttribute(java.lang.String uri,
                                   java.lang.String localName,
                                   java.lang.String rawName,
                                   java.lang.String type,
                                   java.lang.String value,
                                   boolean XSLAttribute)

      Description copied from class: `SerializerBase`
      Adds the given attribute to the set of collected attributes , but only if there is a currently open element. An element is currently open if a startElement() notification has occured but the start of the element has not yet been written to the output. In the stream case this means that we have not yet been forced to close the elements opening tag by another notification, such as a character notification.
      Specified by:
        `addAttribute` in interface `ExtendedContentHandler`
      Overrides:
        `addAttribute` in class `SerializerBase`
      Parameters:
        `uri` - the URI of the attribute
        `localName` - the local name of the attribute
        `rawName` - the qualified name of the attribute
        `type` - the type of the attribute (probably CDATA)
        `value` - the value of the attribute
        `XSLAttribute` - true if this attribute is coming from an xsl:attriute element
      See Also:
        `ExtendedContentHandler.addAttribute(String, String, String, String, String)`

    - #### endCDATA

          public void endCDATA()
                        throws org.xml.sax.SAXException

      Description copied from class: `ToStream`
      Report the end of a CDATA section.
      Specified by:
        `endCDATA` in interface `org.xml.sax.ext.LexicalHandler`
      Overrides:
        `endCDATA` in class `ToStream`
      Throws:
        `org.xml.sax.SAXException` - The application may raise an exception.
      See Also:
        `LexicalHandler.endCDATA()`

    - #### endElement

          public void endElement(java.lang.String elemName)
                          throws org.xml.sax.SAXException

      Description copied from class: `ToStream`
      Receive notification of the end of an element.
      Specified by:
        `endElement` in interface `ExtendedContentHandler`
      Overrides:
        `endElement` in class `ToStream`
      Parameters:
        `elemName` - The element type name
      Throws:
        `org.xml.sax.SAXException`
      See Also:
        `ExtendedContentHandler.endElement(String)`

    - #### startElement

          public void startElement(java.lang.String elementNamespaceURI,
                                   java.lang.String elementLocalName,
                                   java.lang.String elementName)
                            throws org.xml.sax.SAXException

      From XSLTC
      Specified by:
        `startElement` in interface `ExtendedContentHandler`
      Overrides:
        `startElement` in class `ToStream`
      Parameters:
        `elementNamespaceURI` - The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.
        `elementLocalName` - The local name (without prefix), or the empty string if Namespace processing is not being performed.
        `elementName` - The element type name.
      Throws:
        `org.xml.sax.SAXException`
      See Also:
        `ContentHandler.startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)`, `ContentHandler.endElement(java.lang.String, java.lang.String, java.lang.String)`, `AttributeList`

    - #### characters

          public void characters(java.lang.String characters)
                          throws org.xml.sax.SAXException

      From XSLTC
      Specified by:
        `characters` in interface `ExtendedContentHandler`
      Overrides:
        `characters` in class `ToStream`
      Parameters:
        `characters` - The string of characters to process.
      Throws:
        `org.xml.sax.SAXException`

    - #### addAttribute

          public void addAttribute(java.lang.String name,
                                   java.lang.String value)

      From XSLTC
      Specified by:
        `addAttribute` in interface `ExtendedContentHandler`
      Overrides:
        `addAttribute` in class `SerializerBase`
      Parameters:
        `name` - the attribute's qualified name
        `value` - the value of the attribute

    - #### addUniqueAttribute

          public void addUniqueAttribute(java.lang.String qName,
                                         java.lang.String value,
                                         int flags)
                                  throws org.xml.sax.SAXException

      Add a unique attribute
      Parameters:
        `qName` - the fully qualified attribute name.
        `value` - the attribute value
        `flags` - a bitwise flag
      Throws:
        `org.xml.sax.SAXException`

    - #### startPrefixMapping

          public boolean startPrefixMapping(java.lang.String prefix,
                                            java.lang.String uri,
                                            boolean shouldFlush)
                                     throws org.xml.sax.SAXException

      Description copied from class: `ToStream`
      Handle a prefix/uri mapping, which is associated with a startElement() that is soon to follow. Need to close any open start tag to make sure than any name space attributes due to this event are associated wih the up comming element, not the current one.
      Specified by:
        `startPrefixMapping` in interface `ExtendedContentHandler`
      Overrides:
        `startPrefixMapping` in class `ToStream`
      Parameters:
        `prefix` - The Namespace prefix being declared.
        `uri` - The Namespace URI the prefix is mapped to.
        `shouldFlush` - true if any open tags need to be closed first, this will impact which element the mapping applies to (open parent, or its up comming child)
      Returns:
        returns true if the call made a change to the current namespace information, false if it did not change anything, e.g. if the prefix/namespace mapping was already in scope from before.
      Throws:
        `org.xml.sax.SAXException`
      See Also:
        `ExtendedContentHandler.startPrefixMapping(java.lang.String, java.lang.String, boolean)`

    - #### startPrefixMapping

          public void startPrefixMapping(java.lang.String prefix,
                                         java.lang.String uri)
                                  throws org.xml.sax.SAXException

      Description copied from class: `ToStream`
      Begin the scope of a prefix-URI Namespace mapping just before another element is about to start. This call will close any open tags so that the prefix mapping will not apply to the current element, but the up comming child.
      Specified by:
        `startPrefixMapping` in interface `org.xml.sax.ContentHandler`
      Overrides:
        `startPrefixMapping` in class `ToStream`
      Parameters:
        `prefix` - The Namespace prefix being declared.
        `uri` - The Namespace URI the prefix is mapped to.
      Throws:
        `org.xml.sax.SAXException` - The client may throw an exception during processing.
      See Also:
        `ContentHandler.startPrefixMapping(java.lang.String, java.lang.String)`

    - #### namespaceAfterStartElement

          public void namespaceAfterStartElement(java.lang.String prefix,
                                                 java.lang.String uri)
                                          throws org.xml.sax.SAXException

      Description copied from class: `SerializerBase`
      This method is used when a prefix/uri namespace mapping is indicated after the element was started with a startElement() and before and endElement(). startPrefixMapping(prefix,uri) would be used before the startElement() call.
      Specified by:
        `namespaceAfterStartElement` in interface `ExtendedContentHandler`
      Overrides:
        `namespaceAfterStartElement` in class `SerializerBase`
      Parameters:
        `prefix` - the URI of the namespace
        `uri` - the prefix associated with the given URI.
      Throws:
        `org.xml.sax.SAXException`
      See Also:
        `ExtendedContentHandler.namespaceAfterStartElement(String, String)`

    - #### flushPending

          public void flushPending()
                            throws org.xml.sax.SAXException

      Description copied from class: `ToStream`
      This method flushes any pending events, which can be startDocument() closing the opening tag of an element, or closing an open CDATA section.
      Specified by:
        `flushPending` in interface `SerializationHandler`
      Overrides:
        `flushPending` in class `ToStream`
      Throws:
        `org.xml.sax.SAXException`

Copyright © 2023 Apache XML Project. All Rights Reserved.