Save This Page
Home » openjdk-7 » com.sun.org.apache.xml.internal » serialize » [javadoc | source]
com.sun.org.apache.xml.internal.serialize
abstract public class: BaseMarkupSerializer [javadoc | source]
java.lang.Object
   com.sun.org.apache.xml.internal.serialize.BaseMarkupSerializer

All Implemented Interfaces:
    ContentHandler, DTDHandler, DocumentHandler, DeclHandler, Serializer, DOMSerializer, LexicalHandler

Direct Known Subclasses:
    TextSerializer, XHTMLSerializer, HTMLSerializer, XMLSerializer, XML11Serializer

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 or #setOutputByteStream for the writer and #setOutputFormat 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 org.xml.sax.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.

Field Summary
protected  short features     
protected  DOMErrorHandler fDOMErrorHandler     
protected final  DOMErrorImpl fDOMError     
protected  LSSerializerFilter fDOMFilter     
protected  EncodingInfo _encodingInfo     
protected  boolean _started    If the document has been started (header serialized), this flag is set to true so it's not started twice. 
protected  Hashtable _prefixes    Association between namespace URIs (keys) and prefixes (values). Accumulated here prior to starting an element and placing this list in the element state. 
protected  String _docTypePublicId    The system identifier of the document type, if known. 
protected  String _docTypeSystemId    The system identifier of the document type, if known. 
protected  OutputFormat _format    The output format associated with this serializer. This will never be a null reference. If no format was passed to the constructor, the default one for this document type will be used. The format object is never changed by the serializer. 
protected  Printer _printer    The printer used for printing text parts. 
protected  boolean _indenting    True if indenting printer. 
protected final  StringBuffer fStrBuffer    Temporary buffer to store character data 
protected  Node fCurrentNode    Current node that is being processed 
Constructor:
 protected BaseMarkupSerializer(OutputFormat format) 
Method from com.sun.org.apache.xml.internal.serialize.BaseMarkupSerializer Summary:
asContentHandler,   asDOMSerializer,   asDocumentHandler,   attributeDecl,   characters,   characters,   checkUnboundNamespacePrefixedNode,   comment,   comment,   content,   elementDecl,   endCDATA,   endDTD,   endDocument,   endEntity,   endNonEscaping,   endPrefixMapping,   endPreserving,   enterElementState,   externalEntityDecl,   fatalError,   getElementState,   getEntityRef,   getPrefix,   ignorableWhitespace,   internalEntityDecl,   isDocumentState,   leaveElementState,   modifyDOMError,   notationDecl,   prepare,   printCDATAText,   printDoctypeURL,   printEscaped,   printEscaped,   printHex,   printText,   printText,   processingInstruction,   processingInstructionIO,   reset,   serialize,   serialize,   serialize,   serialize,   serializeDTD,   serializeDocument,   serializeElement,   serializeNode,   serializePreRoot,   setDocumentLocator,   setOutputByteStream,   setOutputCharStream,   setOutputFormat,   skippedEntity,   startCDATA,   startDTD,   startDocument,   startEntity,   startNonEscaping,   startPrefixMapping,   startPreserving,   surrogates,   unparsedEntityDecl
Methods from java.lang.Object:
equals,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from com.sun.org.apache.xml.internal.serialize.BaseMarkupSerializer Detail:
 public ContentHandler asContentHandler() throws IOException 
 public DOMSerializer asDOMSerializer() throws IOException 
 public DocumentHandler asDocumentHandler() throws IOException 
 public  void attributeDecl(String eName,
    String aName,
    String type,
    String valueDefault,
    String value) throws SAXException 
 protected  void characters(String text) throws IOException 
    Called to print the text contents in the prevailing element format. Since this method is capable of printing text as CDATA, it is used for that purpose as well. White space handling is determined by the current element state. In addition, the output format can dictate whether the text is printed as CDATA or unescaped.
 public  void characters(char[] chars,
    int start,
    int length) throws SAXException 
 protected  void checkUnboundNamespacePrefixedNode(Node node) throws IOException 
    DOM level 3: Check a node to determine if it contains unbound namespace prefixes.
 public  void comment(String text) throws IOException 
 public  void comment(char[] chars,
    int start,
    int length) throws SAXException 
 protected ElementState content() throws IOException 
    Must be called by a method about to print any type of content. If the element was just opened, the opening tag is closed and will be matched to a closing tag. Returns the current element state with empty and afterElement set to false.
 public  void elementDecl(String name,
    String model) throws SAXException 
 public  void endCDATA() 
 public  void endDTD() 
 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.
 public  void endEntity(String name) 
 public  void endNonEscaping() 
 public  void endPrefixMapping(String prefix) throws SAXException 
 public  void endPreserving() 
 protected ElementState enterElementState(String namespaceURI,
    String localName,
    String rawName,
    boolean preserveSpace) 
    Enter a new element state for the specified element. Tag name and space preserving is specified, element state is initially empty.
 public  void externalEntityDecl(String name,
    String publicId,
    String systemId) throws SAXException 
 protected  void fatalError(String message) throws IOException 
 protected ElementState getElementState() 
    Return the state of the current element.
 abstract protected String getEntityRef(int ch)
    Returns the suitable entity reference for this character value, or null if no such entity exists. Calling this method with '&' will return "&".
 protected String getPrefix(String namespaceURI) 
    Returns the namespace prefix for the specified URI. If the URI has been mapped to a prefix, returns the prefix, otherwise returns null.
 public  void ignorableWhitespace(char[] chars,
    int start,
    int length) throws SAXException 
 public  void internalEntityDecl(String name,
    String value) throws SAXException 
 protected boolean isDocumentState() 
    Returns true if in the state of the document. Returns true before entering any element and after leaving the root element.
 protected ElementState leaveElementState() 
    Leave the current element state and return to the state of the parent element. If this was the root element, return to the state of the document.
 protected DOMError modifyDOMError(String message,
    short severity,
    String type,
    Node node) 
    The method modifies global DOM error object
 public  void notationDecl(String name,
    String publicId,
    String systemId) throws SAXException 
 protected  void prepare() throws IOException 
 protected  void printCDATAText(String text) throws IOException 
 protected  void printDoctypeURL(String url) throws IOException 
    Print a document type public or system identifier URL. Encapsulates the URL in double quotes, escapes non-printing characters and print it equivalent to #printText .
 protected  void printEscaped(int ch) throws IOException 
 protected  void printEscaped(String source) throws IOException 
    Escapes a string so it may be printed as text content or attribute value. Non printable characters are escaped using character references. Where the format specifies a deault entity reference, that reference is used (e.g. <).
 final  void printHex(int ch) throws IOException 
    Escapes chars
 protected  void printText(String text,
    boolean preserveSpace,
    boolean unescaped) throws IOException 
 protected  void printText(char[] chars,
    int start,
    int length,
    boolean preserveSpace,
    boolean unescaped) throws IOException 
    Called to print additional text with whitespace handling. If spaces are preserved, the text is printed as if by calling #printText(String,boolean,boolean) with a call to Printer#breakLine for each new line. If spaces are not preserved, the text is broken at space boundaries if longer than the line width; Multiple spaces are printed as such, but spaces at beginning of line are removed.
 public final  void processingInstruction(String target,
    String code) throws SAXException 
 public  void processingInstructionIO(String target,
    String code) throws IOException 
 public boolean reset() 
 public  void serialize(Element elem) throws 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.
 public  void serialize(Node node) throws IOException 
    Serializes a node using the previously specified writer and output format. Throws an exception only if an I/O exception occured while serializing.
 public  void serialize(DocumentFragment frag) throws 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.
 public  void serialize(Document doc) throws 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.
 protected  void serializeDTD(String name) throws IOException 
 protected  void serializeDocument() throws IOException 
 abstract protected  void serializeElement(Element elem) throws IOException
    Called to serializee the DOM element. The element is serialized based on the serializer's method (XML, HTML, XHTML).
 protected  void serializeNode(Node node) throws IOException 
    Serialize the DOM node. This method is shared across XML, HTML and XHTML serializers and the differences are masked out in a separate #serializeElement .
 protected  void serializePreRoot() throws IOException 
    Comments and PIs cannot be serialized before the root element, because the root element serializes the document type, which generally comes first. Instead such PIs and comments are accumulated inside a vector and serialized by calling this method. Will be called when the root element is serialized and when the document finished serializing.
 public  void setDocumentLocator(Locator locator) 
 public  void setOutputByteStream(OutputStream output) 
 public  void setOutputCharStream(Writer writer) 
 public  void setOutputFormat(OutputFormat format) 
 public  void skippedEntity(String name) throws SAXException 
 public  void startCDATA() 
 public final  void startDTD(String name,
    String publicId,
    String systemId) throws SAXException 
 public  void startDocument() throws SAXException 
 public  void startEntity(String name) 
 public  void startNonEscaping() 
 public  void startPrefixMapping(String prefix,
    String uri) throws SAXException 
 public  void startPreserving() 
 protected  void surrogates(int high,
    int low) throws IOException 
 public  void unparsedEntityDecl(String name,
    String publicId,
    String systemId,
    String notationName) throws SAXException