Class BaseMarkupSerializer

  • All Implemented Interfaces:
    DOMSerializer, Serializer, org.xml.sax.ContentHandler, org.xml.sax.DocumentHandler, org.xml.sax.DTDHandler, org.xml.sax.ext.DeclHandler, org.xml.sax.ext.LexicalHandler
    Direct Known Subclasses:
    XMLSerializer

    public abstract class BaseMarkupSerializer
    extends java.lang.Object
    implements org.xml.sax.ContentHandler, org.xml.sax.DocumentHandler, org.xml.sax.ext.LexicalHandler, org.xml.sax.DTDHandler, org.xml.sax.ext.DeclHandler, DOMSerializer, Serializer
    Base class for a serializer supporting both DOM and SAX pretty serializing of XML/HTML/XHTML documents. Derives classes perform the method-specific serializing, this class provides the common serializing mechanisms.

    The serializer must be initialized with the proper writer and output format before it can be used by calling setOutputCharStream(java.io.Writer) or setOutputByteStream(java.io.OutputStream) for the writer and setOutputFormat(org.apache.jackrabbit.vault.util.xml.serialize.OutputFormat) for the output format.

    The serializer can be reused any number of times, but cannot be used concurrently by two threads.

    If an output stream is used, the encoding is taken from the output format (defaults to UTF-8). If a writer is used, make sure the writer uses the same encoding (if applies) as specified in the output format.

    The serializer supports both DOM and SAX. DOM serializing is done by calling serialize(Document) and SAX serializing is done by firing SAX events and using the serializer as a document handler. This also applies to derived class.

    If an I/O exception occurs while serializing, the serializer will not throw an exception directly, but only throw it at the end of serializing (either DOM or SAX's DocumentHandler.endDocument().

    For elements that are not specified as whitespace preserving, the serializer will potentially break long text lines at space boundaries, indent lines, and serialize elements on separate lines. Line terminators will be regarded as spaces, and spaces at beginning of line will be stripped.

    When indenting, the serializer is capable of detecting seemingly element content, and serializing these elements indented on separate lines. An element is serialized indented when it is the first or last child of an element, or immediate following or preceding another element.

    See Also:
    Serializer, LSSerializer
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      org.xml.sax.ContentHandler asContentHandler()
      Return a ContentHandler interface into this serializer.
      org.xml.sax.DocumentHandler asDocumentHandler()
      Return a DocumentHandler interface into this serializer.
      DOMSerializer asDOMSerializer()
      Return a DOMSerializer interface into this serializer.
      void attributeDecl​(java.lang.String eName, java.lang.String aName, java.lang.String type, java.lang.String valueDefault, java.lang.String value)  
      void characters​(char[] chars, int start, int length)  
      void comment​(char[] chars, int start, int length)  
      void comment​(java.lang.String text)  
      void elementDecl​(java.lang.String name, java.lang.String model)  
      void endCDATA()  
      void endDocument()
      Called at the end of the document to wrap it up.
      void endDTD()  
      void endEntity​(java.lang.String name)  
      void endNonEscaping()  
      void endPrefixMapping​(java.lang.String prefix)  
      void endPreserving()  
      void externalEntityDecl​(java.lang.String name, java.lang.String publicId, java.lang.String systemId)  
      void ignorableWhitespace​(char[] chars, int start, int length)  
      void internalEntityDecl​(java.lang.String name, java.lang.String value)  
      void notationDecl​(java.lang.String name, java.lang.String publicId, java.lang.String systemId)  
      void processingInstruction​(java.lang.String target, java.lang.String code)  
      void processingInstructionIO​(java.lang.String target, java.lang.String code)  
      boolean reset()  
      void serialize​(org.w3c.dom.Document doc)
      Serializes the DOM document using the previously specified writer and output format.
      void serialize​(org.w3c.dom.DocumentFragment frag)
      Serializes the DOM document fragmnt using the previously specified writer and output format.
      void serialize​(org.w3c.dom.Element elem)
      Serializes the DOM element using the previously specified writer and output format.
      void setDocumentLocator​(org.xml.sax.Locator locator)  
      void setOutputByteStream​(java.io.OutputStream output)
      The specified stream will not be closed by this class.
      void setOutputCharStream​(java.io.Writer writer)
      The specified writer will not be closed by this class.
      void setOutputFormat​(OutputFormat format)
      Specifies an output format for this serializer.
      void skippedEntity​(java.lang.String name)  
      void startCDATA()  
      void startDocument()  
      void startDTD​(java.lang.String name, java.lang.String publicId, java.lang.String systemId)  
      void startEntity​(java.lang.String name)  
      void startNonEscaping()  
      void startPrefixMapping​(java.lang.String prefix, java.lang.String uri)  
      void startPreserving()  
      void unparsedEntityDecl​(java.lang.String name, java.lang.String publicId, java.lang.String systemId, java.lang.String notationName)  
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface org.xml.sax.ContentHandler

        endElement, startElement
      • Methods inherited from interface org.xml.sax.DocumentHandler

        endElement, startElement
    • Method Detail

      • asDocumentHandler

        public org.xml.sax.DocumentHandler asDocumentHandler()
                                                      throws java.io.IOException
        Description copied from interface: Serializer
        Return a DocumentHandler interface into this serializer. If the serializer does not support the DocumentHandler interface, it should return null.
        Specified by:
        asDocumentHandler in interface Serializer
        Throws:
        java.io.IOException
      • asContentHandler

        public org.xml.sax.ContentHandler asContentHandler()
                                                    throws java.io.IOException
        Description copied from interface: Serializer
        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
        Throws:
        java.io.IOException
      • setOutputByteStream

        public void setOutputByteStream​(java.io.OutputStream output)

        The specified stream will not be closed by this class.

        Specified by:
        setOutputByteStream in interface Serializer
      • setOutputCharStream

        public void setOutputCharStream​(java.io.Writer writer)

        The specified writer will not be closed by this class.

        Specified by:
        setOutputCharStream in interface Serializer
      • setOutputFormat

        public void setOutputFormat​(OutputFormat format)
        Description copied from interface: Serializer
        Specifies an output format for this serializer. It the serializer has already been associated with an output format, it will switch to the new format. This method should not be called while the serializer is in the process of serializing a document.
        Specified by:
        setOutputFormat in interface Serializer
        Parameters:
        format - The output format to use
      • reset

        public boolean reset()
      • serialize

        public void serialize​(org.w3c.dom.Element elem)
                       throws java.io.IOException
        Serializes the DOM element using the previously specified writer and output format. Throws an exception only if an I/O exception occured while serializing.
        Specified by:
        serialize in interface DOMSerializer
        Parameters:
        elem - The element to serialize
        Throws:
        java.io.IOException - An I/O exception occured while serializing
      • serialize

        public void serialize​(org.w3c.dom.DocumentFragment frag)
                       throws java.io.IOException
        Serializes the DOM document fragmnt using the previously specified writer and output format. Throws an exception only if an I/O exception occured while serializing.
        Specified by:
        serialize in interface DOMSerializer
        Parameters:
        frag - The element to serialize
        Throws:
        java.io.IOException - An I/O exception occured while serializing
      • serialize

        public void serialize​(org.w3c.dom.Document doc)
                       throws java.io.IOException
        Serializes the DOM document using the previously specified writer and output format. Throws an exception only if an I/O exception occured while serializing.
        Specified by:
        serialize in interface DOMSerializer
        Parameters:
        doc - The document to serialize
        Throws:
        java.io.IOException - An I/O exception occured while serializing
      • startDocument

        public void startDocument()
                           throws org.xml.sax.SAXException
        Specified by:
        startDocument in interface org.xml.sax.ContentHandler
        Specified by:
        startDocument in interface org.xml.sax.DocumentHandler
        Throws:
        org.xml.sax.SAXException
      • characters

        public void characters​(char[] chars,
                               int start,
                               int length)
                        throws org.xml.sax.SAXException
        Specified by:
        characters in interface org.xml.sax.ContentHandler
        Specified by:
        characters in interface org.xml.sax.DocumentHandler
        Throws:
        org.xml.sax.SAXException
      • ignorableWhitespace

        public void ignorableWhitespace​(char[] chars,
                                        int start,
                                        int length)
                                 throws org.xml.sax.SAXException
        Specified by:
        ignorableWhitespace in interface org.xml.sax.ContentHandler
        Specified by:
        ignorableWhitespace in interface org.xml.sax.DocumentHandler
        Throws:
        org.xml.sax.SAXException
      • processingInstruction

        public final void processingInstruction​(java.lang.String target,
                                                java.lang.String code)
                                         throws org.xml.sax.SAXException
        Specified by:
        processingInstruction in interface org.xml.sax.ContentHandler
        Specified by:
        processingInstruction in interface org.xml.sax.DocumentHandler
        Throws:
        org.xml.sax.SAXException
      • processingInstructionIO

        public void processingInstructionIO​(java.lang.String target,
                                            java.lang.String code)
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • comment

        public void comment​(char[] chars,
                            int start,
                            int length)
                     throws org.xml.sax.SAXException
        Specified by:
        comment in interface org.xml.sax.ext.LexicalHandler
        Throws:
        org.xml.sax.SAXException
      • comment

        public void comment​(java.lang.String text)
                     throws java.io.IOException
        Throws:
        java.io.IOException
      • startCDATA

        public void startCDATA()
        Specified by:
        startCDATA in interface org.xml.sax.ext.LexicalHandler
      • endCDATA

        public void endCDATA()
        Specified by:
        endCDATA in interface org.xml.sax.ext.LexicalHandler
      • startNonEscaping

        public void startNonEscaping()
      • endNonEscaping

        public void endNonEscaping()
      • startPreserving

        public void startPreserving()
      • endPreserving

        public void endPreserving()
      • endDocument

        public void endDocument()
                         throws org.xml.sax.SAXException
        Called at the end of the document to wrap it up. Will flush the output stream and throw an exception if any I/O error occured while serializing.
        Specified by:
        endDocument in interface org.xml.sax.ContentHandler
        Specified by:
        endDocument in interface org.xml.sax.DocumentHandler
        Throws:
        org.xml.sax.SAXException - An I/O exception occured during serializing
      • startEntity

        public void startEntity​(java.lang.String name)
        Specified by:
        startEntity in interface org.xml.sax.ext.LexicalHandler
      • endEntity

        public void endEntity​(java.lang.String name)
        Specified by:
        endEntity in interface org.xml.sax.ext.LexicalHandler
      • setDocumentLocator

        public void setDocumentLocator​(org.xml.sax.Locator locator)
        Specified by:
        setDocumentLocator in interface org.xml.sax.ContentHandler
        Specified by:
        setDocumentLocator in interface org.xml.sax.DocumentHandler
      • skippedEntity

        public void skippedEntity​(java.lang.String name)
                           throws org.xml.sax.SAXException
        Specified by:
        skippedEntity in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • startPrefixMapping

        public void startPrefixMapping​(java.lang.String prefix,
                                       java.lang.String uri)
                                throws org.xml.sax.SAXException
        Specified by:
        startPrefixMapping in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • endPrefixMapping

        public void endPrefixMapping​(java.lang.String prefix)
                              throws org.xml.sax.SAXException
        Specified by:
        endPrefixMapping in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • startDTD

        public final void startDTD​(java.lang.String name,
                                   java.lang.String publicId,
                                   java.lang.String systemId)
                            throws org.xml.sax.SAXException
        Specified by:
        startDTD in interface org.xml.sax.ext.LexicalHandler
        Throws:
        org.xml.sax.SAXException
      • endDTD

        public void endDTD()
        Specified by:
        endDTD in interface org.xml.sax.ext.LexicalHandler
      • elementDecl

        public void elementDecl​(java.lang.String name,
                                java.lang.String model)
                         throws org.xml.sax.SAXException
        Specified by:
        elementDecl in interface org.xml.sax.ext.DeclHandler
        Throws:
        org.xml.sax.SAXException
      • attributeDecl

        public void attributeDecl​(java.lang.String eName,
                                  java.lang.String aName,
                                  java.lang.String type,
                                  java.lang.String valueDefault,
                                  java.lang.String value)
                           throws org.xml.sax.SAXException
        Specified by:
        attributeDecl in interface org.xml.sax.ext.DeclHandler
        Throws:
        org.xml.sax.SAXException
      • internalEntityDecl

        public void internalEntityDecl​(java.lang.String name,
                                       java.lang.String value)
                                throws org.xml.sax.SAXException
        Specified by:
        internalEntityDecl in interface org.xml.sax.ext.DeclHandler
        Throws:
        org.xml.sax.SAXException
      • externalEntityDecl

        public void externalEntityDecl​(java.lang.String name,
                                       java.lang.String publicId,
                                       java.lang.String systemId)
                                throws org.xml.sax.SAXException
        Specified by:
        externalEntityDecl in interface org.xml.sax.ext.DeclHandler
        Throws:
        org.xml.sax.SAXException
      • unparsedEntityDecl

        public void unparsedEntityDecl​(java.lang.String name,
                                       java.lang.String publicId,
                                       java.lang.String systemId,
                                       java.lang.String notationName)
                                throws org.xml.sax.SAXException
        Specified by:
        unparsedEntityDecl in interface org.xml.sax.DTDHandler
        Throws:
        org.xml.sax.SAXException
      • notationDecl

        public void notationDecl​(java.lang.String name,
                                 java.lang.String publicId,
                                 java.lang.String systemId)
                          throws org.xml.sax.SAXException
        Specified by:
        notationDecl in interface org.xml.sax.DTDHandler
        Throws:
        org.xml.sax.SAXException