Class SerializerBase

java.lang.Object
org.apache.xml.serializer.SerializerBase
All Implemented Interfaces:
DOMSerializer, ExtendedContentHandler, ExtendedLexicalHandler, SerializationHandler, Serializer, ContentHandler, DTDHandler, ErrorHandler, DeclHandler, LexicalHandler
Direct Known Subclasses:
ToSAXHandler, ToStream, ToUnknownStream

public abstract class SerializerBase extends Object implements SerializationHandler
This class acts as a base class for the XML "serializers" and the stream serializers. It contains a number of common fields and methods.
  • Field Details

  • Method Details

    • comment

      public void comment(String data) throws SAXException
      Receive notification of a comment.
      Specified by:
      comment in interface ExtendedLexicalHandler
      Parameters:
      data - the comment, but unlike the SAX comment() method this method takes a String rather than a character array.
      Throws:
      SAXException
      See Also:
    • setDocumentLocator

      public void setDocumentLocator(Locator locator)
      Receive an object for locating the origin of SAX document events.
      Specified by:
      setDocumentLocator in interface ContentHandler
      Parameters:
      locator - An object that can return the location of any SAX document event. Receive an object for locating the origin of SAX document events.

      SAX parsers are strongly encouraged (though not absolutely required) to supply a locator: if it does so, it must supply the locator to the application by invoking this method before invoking any of the other methods in the DocumentHandler interface.

      The locator allows the application to determine the end position of any document-related event, even if the parser is not reporting an error. Typically, the application will use this information for reporting its own errors (such as character content that does not match an application's business rules). The information returned by the locator is probably not sufficient for use with a search engine.

      Note that the locator will return correct information only during the invocation of the events in this interface. The application should not attempt to use it at any other time.

    • addAttribute

      public void addAttribute(String uri, String localName, String rawName, String type, String value, boolean XSLAttribute) throws SAXException
      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
      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
      Throws:
      SAXException
      See Also:
    • addAttributeAlways

      public boolean addAttributeAlways(String uri, String localName, String rawName, String type, String value, boolean XSLAttribute)
      Adds the given attribute to the set of attributes, even if there is no currently open element. This is useful if a SAX startPrefixMapping() should need to add an attribute before the element name is seen.
      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:attribute element
      Returns:
      true if the attribute was added, false if an existing value was replaced.
    • addAttribute

      public void addAttribute(String name, String value)
      Adds the given attribute to the set of collected attributes, but only if there is a currently open element.
      Specified by:
      addAttribute in interface ExtendedContentHandler
      Parameters:
      name - the attribute's qualified name
      value - the value of the attribute
    • addXSLAttribute

      public void addXSLAttribute(String name, String value, String uri)
      Adds the given xsl:attribute to the set of collected attributes, but only if there is a currently open element.
      Specified by:
      addXSLAttribute in interface ExtendedContentHandler
      Parameters:
      name - the attribute's qualified name (prefix:localName)
      value - the value of the attribute
      uri - the URI that the prefix of the name points to
    • addAttributes

      public void addAttributes(Attributes atts) throws SAXException
      Add the given attributes to the currently collected ones. These attributes are always added, regardless of whether on not an element is currently open.
      Specified by:
      addAttributes in interface ExtendedContentHandler
      Parameters:
      atts - List of attributes to add to this list
      Throws:
      SAXException
    • asContentHandler

      public ContentHandler asContentHandler() throws IOException
      Return a ContentHandler interface into this serializer. If the serializer does not support the ContentHandler interface, it should return null.
      Specified by:
      asContentHandler in interface Serializer
      Returns:
      A ContentHandler interface into this serializer, or null if the serializer is not SAX 2 capable
      Throws:
      IOException - An I/O exception occured
    • endEntity

      public void endEntity(String name) throws SAXException
      Report the end of an entity.
      Specified by:
      endEntity in interface LexicalHandler
      Parameters:
      name - The name of the entity that is ending.
      Throws:
      SAXException - The application may raise an exception.
      See Also:
    • close

      public void close()
      Flush and close the underlying java.io.Writer. This method applies to ToStream serializers, not ToSAXHandler serializers.
      Specified by:
      close in interface SerializationHandler
      See Also:
    • getEncoding

      public String getEncoding()
      Returns the character encoding to be used in the output document.
      Returns:
      the character encoding to be used in the output document.
    • setEncoding

      public void setEncoding(String encoding)
      Sets the character encoding coming from the xsl:output encoding stylesheet attribute.
      Parameters:
      m_encoding - the character encoding
    • setOmitXMLDeclaration

      public void setOmitXMLDeclaration(boolean b)
      Sets the value coming from the xsl:output omit-xml-declaration stylesheet attribute
      Parameters:
      b - true if the XML declaration is to be omitted from the output document.
    • getOmitXMLDeclaration

      public boolean getOmitXMLDeclaration()
      Returns:
      true if the XML declaration is to be omitted from the output document.
    • getDoctypePublic

      public String getDoctypePublic()
      Returns the previously set value of the value to be used as the public identifier in the document type declaration (DTD).
      Returns:
      the public identifier to be used in the DOCTYPE declaration in the output document.
    • setDoctypePublic

      public void setDoctypePublic(String doctypePublic)
      Set the value coming from the xsl:output doctype-public stylesheet attribute.
      Parameters:
      doctypePublic - the public identifier to be used in the DOCTYPE declaration in the output document.
    • getDoctypeSystem

      public String getDoctypeSystem()
      Returns the previously set value of the value to be used as the system identifier in the document type declaration (DTD).
      Returns:
      the system identifier to be used in the DOCTYPE declaration in the output document.
    • setDoctypeSystem

      public void setDoctypeSystem(String doctypeSystem)
      Set the value coming from the xsl:output doctype-system stylesheet attribute.
      Parameters:
      doctypeSystem - the system identifier to be used in the DOCTYPE declaration in the output document.
    • setDoctype

      public void setDoctype(String doctypeSystem, String doctypePublic)
      Set the value coming from the xsl:output doctype-public and doctype-system stylesheet properties
      Parameters:
      doctypeSystem - the system identifier to be used in the DOCTYPE declaration in the output document.
      doctypePublic - the public identifier to be used in the DOCTYPE declaration in the output document.
    • setStandalone

      public void setStandalone(String standalone)
      Sets the value coming from the xsl:output standalone stylesheet attribute.
      Parameters:
      standalone - a value of "yes" indicates that the standalone delaration is to be included in the output document. This method remembers if the value was explicitly set using this method, verses if the value is the default value.
    • getStandalone

      public String getStandalone()
      Gets the XSL standalone attribute
      Returns:
      a value of "yes" if the standalone delaration is to be included in the output document.
      See Also:
      • XSLOutputAttributes.getStandalone()
    • getIndent

      public boolean getIndent()
      Returns:
      true if the output document should be indented to visually indicate its structure.
    • getMediaType

      public String getMediaType()
      Gets the mediatype the media-type or MIME type associated with the output document.
      Returns:
      the mediatype the media-type or MIME type associated with the output document.
    • getVersion

      public String getVersion()
      Gets the version of the output format.
      Returns:
      the version of the output format.
    • setVersion

      public void setVersion(String version)
      Sets the value coming from the xsl:output version attribute.
      Parameters:
      version - the version of the output format.
      See Also:
      • XSLOutputAttributes.setVersion(String)
    • setMediaType

      public void setMediaType(String mediaType)
      Sets the value coming from the xsl:output media-type stylesheet attribute.
      Parameters:
      mediaType - the non-null media-type or MIME type associated with the output document.
      See Also:
    • getIndentAmount

      public int getIndentAmount()
      Returns:
      the number of spaces to indent for each indentation level.
    • setIndentAmount

      public void setIndentAmount(int m_indentAmount)
      Sets the indentation amount.
      Specified by:
      setIndentAmount in interface SerializationHandler
      Parameters:
      m_indentAmount - The m_indentAmount to set
    • setIndent

      public void setIndent(boolean doIndent)
      Sets the value coming from the xsl:output indent stylesheet attribute.
      Parameters:
      doIndent - true if the output document should be indented to visually indicate its structure.
      See Also:
      • XSLOutputAttributes.setIndent(boolean)
    • namespaceAfterStartElement

      public void namespaceAfterStartElement(String uri, String prefix) throws SAXException
      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
      Parameters:
      uri - the URI of the namespace
      prefix - the prefix associated with the given URI.
      Throws:
      SAXException
      See Also:
    • asDOMSerializer

      public DOMSerializer asDOMSerializer() throws IOException
      Return a DOMSerializer interface into this serializer. If the serializer does not support the DOMSerializer interface, it should return null.
      Specified by:
      asDOMSerializer in interface Serializer
      Returns:
      A DOMSerializer interface into this serializer, or null if the serializer is not DOM capable
      Throws:
      IOException - An I/O exception occured
      See Also:
    • getNamespaceMappings

      public NamespaceMappings getNamespaceMappings()
      Some users of the serializer may need the current namespace mappings
      Specified by:
      getNamespaceMappings in interface ExtendedContentHandler
      Returns:
      the current namespace mappings (prefix/uri)
      See Also:
    • getPrefix

      public String getPrefix(String namespaceURI)
      Returns the prefix currently pointing to the given URI (if any).
      Specified by:
      getPrefix in interface ExtendedContentHandler
      Parameters:
      namespaceURI - the uri of the namespace in question
      Returns:
      a prefix pointing to the given URI (if any).
      See Also:
    • getNamespaceURI

      public String getNamespaceURI(String qname, boolean isElement)
      Returns the URI of an element or attribute. Note that default namespaces do not apply directly to attributes.
      Specified by:
      getNamespaceURI in interface ExtendedContentHandler
      Parameters:
      qname - a qualified name
      isElement - true if the qualified name is the name of an element.
      Returns:
      returns the namespace URI associated with the qualified name.
    • getNamespaceURIFromPrefix

      public String getNamespaceURIFromPrefix(String prefix)
      Returns the URI of prefix (if any)
      Specified by:
      getNamespaceURIFromPrefix in interface ExtendedContentHandler
      Parameters:
      prefix - the prefix whose URI is searched for
      Returns:
      the namespace URI currently associated with the prefix, null if the prefix is undefined.
    • entityReference

      public void entityReference(String name) throws SAXException
      Entity reference event.
      Specified by:
      entityReference in interface ExtendedContentHandler
      Parameters:
      name - Name of entity
      Throws:
      SAXException
    • setTransformer

      public void setTransformer(Transformer t)
      Sets the transformer associated with this serializer
      Specified by:
      setTransformer in interface SerializationHandler
      Parameters:
      t - the transformer associated with this serializer.
      See Also:
    • getTransformer

      public Transformer getTransformer()
      Gets the transformer associated with this serializer
      Specified by:
      getTransformer in interface SerializationHandler
      Returns:
      returns the transformer associated with this serializer.
      See Also:
    • characters

      public void characters(Node node) throws SAXException
      This method gets the nodes value as a String and uses that String as if it were an input character notification.
      Specified by:
      characters in interface ExtendedContentHandler
      Parameters:
      node - the Node to serialize
      Throws:
      SAXException
    • error

      public void error(SAXParseException exc) throws SAXException
      Specified by:
      error in interface ErrorHandler
      Throws:
      SAXException
      See Also:
    • fatalError

      public void fatalError(SAXParseException exc) throws SAXException
      Specified by:
      fatalError in interface ErrorHandler
      Throws:
      SAXException
      See Also:
    • warning

      public void warning(SAXParseException exc) throws SAXException
      Specified by:
      warning in interface ErrorHandler
      Throws:
      SAXException
      See Also:
    • fireEndEntity

      public void fireEndEntity(String name) throws SAXException
      To fire off end entity trace event
      Parameters:
      name - Name of entity
      Throws:
      SAXException
    • startDocument

      public void startDocument() throws SAXException
      Receive notification of the beginning of a document. This method is never a self generated call, but only called externally.

      The SAX parser will invoke this method only once, before any other methods in this interface or in DTDHandler (except for setDocumentLocator).

      Specified by:
      startDocument in interface ContentHandler
      Throws:
      SAXException - Any SAX exception, possibly wrapping another exception.
      SAXException
    • setSourceLocator

      public void setSourceLocator(SourceLocator locator)
      This method is used to set the source locator, which might be used to generated an error message.
      Specified by:
      setSourceLocator in interface ExtendedContentHandler
      Parameters:
      locator - the source locator
      See Also:
    • setNamespaceMappings

      public void setNamespaceMappings(NamespaceMappings mappings)
      Used only by TransformerSnapshotImpl to restore the serialization to a previous state.
      Specified by:
      setNamespaceMappings in interface SerializationHandler
      Parameters:
      mappings - NamespaceMappings
    • reset

      public boolean reset()
      Description copied from interface: Serializer
      This method resets the serializer. If this method returns true, the serializer may be used for subsequent serialization of new documents. It is possible to change the output format and output stream prior to serializing, or to reuse the existing output format and output stream or writer.
      Specified by:
      reset in interface Serializer
      Returns:
      True if serializer has been reset and can be reused
    • addAttribute

      public void addAttribute(String uri, String localName, String rawName, String type, String value) throws SAXException
      This method adds an attribute the the current element, but should not be used for an xsl:attribute child.
      Specified by:
      addAttribute in interface ExtendedContentHandler
      Parameters:
      uri - the namespace URI of the attribute name
      localName - the local name of the attribute (without prefix)
      rawName - the qualified name of the attribute
      type - the attribute type typically character data (CDATA)
      value - the value of the attribute
      Throws:
      SAXException
      See Also:
    • notationDecl

      public void notationDecl(String arg0, String arg1, String arg2) throws SAXException
      Specified by:
      notationDecl in interface DTDHandler
      Throws:
      SAXException
      See Also:
    • unparsedEntityDecl

      public void unparsedEntityDecl(String arg0, String arg1, String arg2, String arg3) throws SAXException
      Specified by:
      unparsedEntityDecl in interface DTDHandler
      Throws:
      SAXException
      See Also:
    • setDTDEntityExpansion

      public void setDTDEntityExpansion(boolean expand)
      If set to false the serializer does not expand DTD entities, but leaves them as is, the default value is true.
      Specified by:
      setDTDEntityExpansion in interface SerializationHandler
      Parameters:
      expand - true if DTD entities are to be expanded, false if they are to be left as DTD entity references.
    • documentIsEmpty

      public boolean documentIsEmpty()
      Return true if nothing has been sent to this result tree yet.

      This is not a public API.

    • getOutputProperty

      public String getOutputProperty(String name)
      Get the value of an output property, the explicit value, if any, otherwise the default value, if any, otherwise null.
    • getOutputPropertyNonDefault

      public String getOutputPropertyNonDefault(String name)
      Get the value of an output property, not the default value. If there is a default value, but no non-default value this method will return null.

    • asDOM3Serializer

      public Object asDOM3Serializer() throws IOException
      Return a DOM3Serializer interface into this serializer. If the serializer does not support the DOM3Serializer interface, it should return null.
      Specified by:
      asDOM3Serializer in interface Serializer
      Returns:
      A DOM3Serializer interface into this serializer, or null if the serializer is not DOM capable
      Throws:
      IOException - An I/O exception occured
      See Also:
    • getOutputPropertyDefault

      public String getOutputPropertyDefault(String name)
      Get the default value of an xsl:output property, which would be null only if no default value exists for the property.
    • setOutputProperty

      public void setOutputProperty(String name, String val)
      Set the value for the output property, typically from an xsl:output element, but this does not change what the default value is.
    • setOutputPropertyDefault

      public void setOutputPropertyDefault(String name, String val)
      Set the default value for an output property, but this does not impact any explicitly set value.
    • setCdataSectionElements

      void setCdataSectionElements(Vector URI_and_localNames)
      Sets the value coming from the xsl:output cdata-section-elements stylesheet property. This sets the elements whose text elements are to be output as CDATA sections.
      Parameters:
      URI_and_localNames - pairs of namespace URI and local names that identify elements whose text elements are to be output as CDATA sections. The namespace of the local element must be the given URI to match. The qName is not given because the prefix does not matter, only the namespace URI to which that prefix would map matters, so the prefix itself is not relevant in specifying which elements have their text to be output as CDATA sections.