org.apache.xml.serialize.transition
Class BaseMarkupSerializer

java.lang.Object
  |
  +--org.apache.xml.serialize.transition.BaseMarkupSerializer
Direct Known Subclasses:
HTMLSerializer, TextSerializer, XMLSerializer

public abstract class BaseMarkupSerializer
extends java.lang.Object
implements ContentHandler, DocumentHandler, org.xml.sax.ext.LexicalHandler, DTDHandler, org.xml.sax.ext.DeclHandler, DOMSerializer, Serializer, SerializerHandler

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 #init. 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(org.w3c.dom.Element) 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, DOMSerializer

Method Summary
 ContentHandler asContentHandler()
           
 DocumentHandler asDocumentHandler()
           
 DOMSerializer asDOMSerializer()
           
 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)
           
 OutputFormat getOutputFormat()
          Returns the output format for this serializer.
 java.io.OutputStream getOutputStream()
           
 java.io.Writer getWriter()
           
 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)
           
 boolean reset()
           
 void serialize(Document doc)
          Serializes the DOM document using the previously specified writer and output format.
 void serialize(DocumentFragment frag)
          Serializes the DOM document fragmnt using the previously specified writer and output format.
 void serialize(Element elem)
          Serializes the DOM element using the previously specified writer and output format.
 void serializeXPathReturnNode(Node node)
          Serialize a node from the node-set value returned by an XPath expression.
 void setDocumentLocator(Locator locator)
           
 void setOutputFormat(OutputFormat format)
          Specifies an output format for this serializer.
 void setOutputStream(java.io.OutputStream output)
          Specifies an output stream to which the document should be serialized.
 void setWriter(java.io.Writer writer)
          Specifies a writer to which the document should be serialized.
 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
 

Method Detail

asDocumentHandler

public DocumentHandler asDocumentHandler()
                                  throws java.io.IOException
Specified by:
asDocumentHandler in interface Serializer

asContentHandler

public ContentHandler asContentHandler()
                                throws java.io.IOException
Specified by:
asContentHandler in interface Serializer

asDOMSerializer

public DOMSerializer asDOMSerializer()
                              throws java.io.IOException
Specified by:
asDOMSerializer in interface Serializer

setOutputStream

public void setOutputStream(java.io.OutputStream output)
Specifies an output stream to which the document should be serialized. This method should not be called while the serializer is in the process of serializing a document.

The encoding specified in the OutputFormat is used, or if no encoding was specified, the default for the selected output method.

Specified by:
setOutputStream in interface Serializer
Parameters:
output - The output stream

getOutputStream

public java.io.OutputStream getOutputStream()
Specified by:
getOutputStream in interface Serializer

setWriter

public void setWriter(java.io.Writer writer)
Specifies a writer to which the document should be serialized. This method should not be called while the serializer is in the process of serializing a document.

The encoding specified for the OutputFormat must be identical to the output format used with the writer.

Specified by:
setWriter in interface Serializer
Parameters:
writer - The output writer stream

getWriter

public java.io.Writer getWriter()
Specified by:
getWriter in interface Serializer

setOutputFormat

public void setOutputFormat(OutputFormat format)
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

getOutputFormat

public OutputFormat getOutputFormat()
Returns the output format for this serializer.
Specified by:
getOutputFormat in interface Serializer
Returns:
The output format in use

reset

public boolean reset()
Specified by:
reset in interface Serializer

serialize

public void serialize(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(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:
elem - The element to serialize
Throws:
java.io.IOException - An I/O exception occured while serializing

serialize

public void serialize(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 SAXException
Specified by:
startDocument in interface ContentHandler

characters

public void characters(char[] chars,
                       int start,
                       int length)
Specified by:
characters in interface ContentHandler

ignorableWhitespace

public void ignorableWhitespace(char[] chars,
                                int start,
                                int length)
Specified by:
ignorableWhitespace in interface ContentHandler

processingInstruction

public void processingInstruction(java.lang.String target,
                                  java.lang.String code)
Specified by:
processingInstruction in interface ContentHandler

comment

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

comment

public void comment(java.lang.String text)

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()
Specified by:
startNonEscaping in interface SerializerHandler

endNonEscaping

public void endNonEscaping()
Specified by:
endNonEscaping in interface SerializerHandler

startPreserving

public void startPreserving()
Specified by:
startPreserving in interface SerializerHandler

endPreserving

public void endPreserving()
Specified by:
endPreserving in interface SerializerHandler

endDocument

public void endDocument()
                 throws 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 ContentHandler
Throws:
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(Locator locator)
Specified by:
setDocumentLocator in interface ContentHandler

skippedEntity

public void skippedEntity(java.lang.String name)
                   throws SAXException
Specified by:
skippedEntity in interface ContentHandler

startPrefixMapping

public void startPrefixMapping(java.lang.String prefix,
                               java.lang.String uri)
                        throws SAXException
Specified by:
startPrefixMapping in interface ContentHandler

endPrefixMapping

public void endPrefixMapping(java.lang.String prefix)
                      throws SAXException
Specified by:
endPrefixMapping in interface ContentHandler

startDTD

public void startDTD(java.lang.String name,
                     java.lang.String publicId,
                     java.lang.String systemId)
Specified by:
startDTD in interface org.xml.sax.ext.LexicalHandler

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)
Specified by:
elementDecl in interface org.xml.sax.ext.DeclHandler

attributeDecl

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

internalEntityDecl

public void internalEntityDecl(java.lang.String name,
                               java.lang.String value)
Specified by:
internalEntityDecl in interface org.xml.sax.ext.DeclHandler

externalEntityDecl

public void externalEntityDecl(java.lang.String name,
                               java.lang.String publicId,
                               java.lang.String systemId)
Specified by:
externalEntityDecl in interface org.xml.sax.ext.DeclHandler

unparsedEntityDecl

public void unparsedEntityDecl(java.lang.String name,
                               java.lang.String publicId,
                               java.lang.String systemId,
                               java.lang.String notationName)
Specified by:
unparsedEntityDecl in interface DTDHandler

notationDecl

public void notationDecl(java.lang.String name,
                         java.lang.String publicId,
                         java.lang.String systemId)
Specified by:
notationDecl in interface DTDHandler

serializeXPathReturnNode

public void serializeXPathReturnNode(Node node)
                              throws java.io.IOException
Serialize a node from the node-set value returned by an XPath expression.
Parameters:
node - The node to serialize


Copyright © 2000 Apache XML Project. All Rights Reserved.