org.apache.xml.serialize
Class DOMSerializerImpl

java.lang.Object
  |
  +--org.apache.xml.serialize.DOMSerializerImpl
All Implemented Interfaces:
org.w3c.dom.DOMConfiguration, org.w3c.dom.ls.LSSerializer

public class DOMSerializerImpl
extends java.lang.Object
implements org.w3c.dom.ls.LSSerializer, org.w3c.dom.DOMConfiguration

EXPERIMENTAL: Implemenatation of DOM Level 3 org.w3c.ls.LSSerializer by delegating serialization calls to XMLSerializer. LSSerializer provides an API for serializing (writing) a DOM document out in an XML document. The XML data is written to an output stream. During serialization of XML data, namespace fixup is done when possible as defined in DOM Level 3 Core, Appendix B.

Version:
$Id: DOMSerializerImpl.java,v 1.36 2005/06/13 22:26:42 nddelima Exp $
Author:
Elena Litani, IBM, Gopal Sharma, Sun Microsystems, Arun Yadav, Sun Microsystems

Field Summary
protected static short CDATA
           
protected static short COMMENTS
           
protected static short DISCARDDEFAULT
           
protected static short DOM_ELEMENT_CONTENT_WHITESPACE
           
protected static short ENTITIES
           
protected  short features
          REVISIT: Currently we handle 3 different configurations, would be nice just have one configuration that has different recognized parameters depending if it is used in Core/LS.
protected static short INFOSET
           
protected static short NAMESPACES
           
protected static short NSDECL
           
protected static short SPLITCDATA
           
protected static short WELLFORMED
           
protected static short XMLDECL
           
 
Constructor Summary
DOMSerializerImpl()
          Constructs a new LSSerializer.
 
Method Summary
 boolean canSetParameter(java.lang.String name, java.lang.Object state)
          DOM L3-EXPERIMENTAL: Check if parameter can be set
 org.w3c.dom.DOMConfiguration getDomConfig()
           
 org.w3c.dom.ls.LSSerializerFilter getFilter()
          When the application provides a filter, the serializer will call out to the filter before serializing each Node.
 java.lang.String getNewLine()
          DOM L3 EXPERIMENTAL: The end-of-line sequence of characters to be used in the XML being written out.
 java.lang.Object getParameter(java.lang.String name)
          DOM L3-EXPERIMENTAL: Getter for boolean and object parameters
 org.w3c.dom.DOMStringList getParameterNames()
          DOM Level 3 Core CR - Experimental.
 void setFilter(org.w3c.dom.ls.LSSerializerFilter filter)
          When the application provides a filter, the serializer will call out to the filter before serializing each Node.
 void setNewLine(java.lang.String newLine)
          DOM L3 EXPERIMENTAL: The end-of-line sequence of characters to be used in the XML being written out.
 void setParameter(java.lang.String name, java.lang.Object value)
          DOM L3-EXPERIMENTAL: Setter for boolean and object parameters
 boolean write(org.w3c.dom.Node node, org.w3c.dom.ls.LSOutput destination)
          Serialize the specified node as described above in the general description of the LSSerializer interface.
 java.lang.String writeToString(org.w3c.dom.Node wnode)
          DOM L3 EXPERIMENTAL: Serialize the specified node as described above in the description of LSSerializer.
 boolean writeToURI(org.w3c.dom.Node node, java.lang.String URI)
          Serialize the specified node as described above in the general description of the LSSerializer interface.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

features

protected short features
REVISIT: Currently we handle 3 different configurations, would be nice just have one configuration that has different recognized parameters depending if it is used in Core/LS.

NAMESPACES

protected static final short NAMESPACES

WELLFORMED

protected static final short WELLFORMED

ENTITIES

protected static final short ENTITIES

CDATA

protected static final short CDATA

SPLITCDATA

protected static final short SPLITCDATA

COMMENTS

protected static final short COMMENTS

DISCARDDEFAULT

protected static final short DISCARDDEFAULT

INFOSET

protected static final short INFOSET

XMLDECL

protected static final short XMLDECL

NSDECL

protected static final short NSDECL

DOM_ELEMENT_CONTENT_WHITESPACE

protected static final short DOM_ELEMENT_CONTENT_WHITESPACE
Constructor Detail

DOMSerializerImpl

public DOMSerializerImpl()
Constructs a new LSSerializer. The constructor turns on the namespace support in XMLSerializer and initializes the following fields: fNSBinder, fLocalNSBinder, fSymbolTable, fEmptySymbol, fXmlSymbol, fXmlnsSymbol, fNamespaceCounter, fFeatures.
Method Detail

getDomConfig

public org.w3c.dom.DOMConfiguration getDomConfig()
Specified by:
getDomConfig in interface org.w3c.dom.ls.LSSerializer

setParameter

public void setParameter(java.lang.String name,
                         java.lang.Object value)
                  throws org.w3c.dom.DOMException
DOM L3-EXPERIMENTAL: Setter for boolean and object parameters
Specified by:
setParameter in interface org.w3c.dom.DOMConfiguration

canSetParameter

public boolean canSetParameter(java.lang.String name,
                               java.lang.Object state)
DOM L3-EXPERIMENTAL: Check if parameter can be set
Specified by:
canSetParameter in interface org.w3c.dom.DOMConfiguration

getParameterNames

public org.w3c.dom.DOMStringList getParameterNames()
DOM Level 3 Core CR - Experimental. The list of the parameters supported by this DOMConfiguration object and for which at least one value can be set by the application. Note that this list can also contain parameter names defined outside this specification.
Specified by:
getParameterNames in interface org.w3c.dom.DOMConfiguration

getParameter

public java.lang.Object getParameter(java.lang.String name)
                              throws org.w3c.dom.DOMException
DOM L3-EXPERIMENTAL: Getter for boolean and object parameters
Specified by:
getParameter in interface org.w3c.dom.DOMConfiguration

writeToString

public java.lang.String writeToString(org.w3c.dom.Node wnode)
                               throws org.w3c.dom.DOMException,
                                      org.w3c.dom.ls.LSException
DOM L3 EXPERIMENTAL: Serialize the specified node as described above in the description of LSSerializer. The result of serializing the node is returned as a string. Writing a Document or Entity node produces a serialized form that is well formed XML. Writing other node types produces a fragment of text in a form that is not fully defined by this document, but that should be useful to a human for debugging or diagnostic purposes.
Specified by:
writeToString in interface org.w3c.dom.ls.LSSerializer
Parameters:
wnode - The node to be written.
Returns:
Returns the serialized data
Throws:
org.w3c.dom.DOMException - DOMSTRING_SIZE_ERR: The resulting string is too long to fit in a DOMString.
org.w3c.dom.ls.LSException - SERIALIZE_ERR: Unable to serialize the node. DOM applications should attach a DOMErrorHandler using the parameter "error-handler" to get details on error.

setNewLine

public void setNewLine(java.lang.String newLine)
DOM L3 EXPERIMENTAL: The end-of-line sequence of characters to be used in the XML being written out. The only permitted values are these:
null
Use a default end-of-line sequence. DOM implementations should choose the default to match the usual convention for text files in the environment being used. Implementations must choose a default sequence that matches one of those allowed by 2.11 "End-of-Line Handling".
CR
The carriage-return character (#xD).
CR-LF
The carriage-return and line-feed characters (#xD #xA).
LF
The line-feed character (#xA).

The default value for this attribute is null.
Specified by:
setNewLine in interface org.w3c.dom.ls.LSSerializer

getNewLine

public java.lang.String getNewLine()
DOM L3 EXPERIMENTAL: The end-of-line sequence of characters to be used in the XML being written out. The only permitted values are these:
null
Use a default end-of-line sequence. DOM implementations should choose the default to match the usual convention for text files in the environment being used. Implementations must choose a default sequence that matches one of those allowed by 2.11 "End-of-Line Handling".
CR
The carriage-return character (#xD).
CR-LF
The carriage-return and line-feed characters (#xD #xA).
LF
The line-feed character (#xA).

The default value for this attribute is null.
Specified by:
getNewLine in interface org.w3c.dom.ls.LSSerializer

getFilter

public org.w3c.dom.ls.LSSerializerFilter getFilter()
When the application provides a filter, the serializer will call out to the filter before serializing each Node. Attribute nodes are never passed to the filter. The filter implementation can choose to remove the node from the stream or to terminate the serialization early.
Specified by:
getFilter in interface org.w3c.dom.ls.LSSerializer

setFilter

public void setFilter(org.w3c.dom.ls.LSSerializerFilter filter)
When the application provides a filter, the serializer will call out to the filter before serializing each Node. Attribute nodes are never passed to the filter. The filter implementation can choose to remove the node from the stream or to terminate the serialization early.
Specified by:
setFilter in interface org.w3c.dom.ls.LSSerializer

write

public boolean write(org.w3c.dom.Node node,
                     org.w3c.dom.ls.LSOutput destination)
              throws org.w3c.dom.ls.LSException
Serialize the specified node as described above in the general description of the LSSerializer interface. The output is written to the supplied LSOutput.
When writing to a LSOutput, the encoding is found by looking at the encoding information that is reachable through the LSOutput and the item to be written (or its owner document) in this order:
  1. LSOutput.encoding,
  2. Document.actualEncoding,
  3. Document.xmlEncoding.

If no encoding is reachable through the above properties, a default encoding of "UTF-8" will be used.
If the specified encoding is not supported an "unsupported-encoding" error is raised.
If no output is specified in the LSOutput, a "no-output-specified" error is raised.
Specified by:
write in interface org.w3c.dom.ls.LSSerializer
Parameters:
node - The node to serialize.
destination - The destination for the serialized DOM.
Returns:
Returns true if node was successfully serialized and false in case the node couldn't be serialized.

writeToURI

public boolean writeToURI(org.w3c.dom.Node node,
                          java.lang.String URI)
                   throws org.w3c.dom.ls.LSException
Serialize the specified node as described above in the general description of the LSSerializer interface. The output is written to the supplied URI.
When writing to a URI, the encoding is found by looking at the encoding information that is reachable through the item to be written (or its owner document) in this order:
  1. Document.inputEncoding,
  2. Document.xmlEncoding.

If no encoding is reachable through the above properties, a default encoding of "UTF-8" will be used.
If the specified encoding is not supported an "unsupported-encoding" error is raised.
Specified by:
writeToURI in interface org.w3c.dom.ls.LSSerializer
Parameters:
node - The node to serialize.
URI - The URI to write to.
Returns:
Returns true if node was successfully serialized and false in case the node couldn't be serialized.


Copyright © 1999-2005 Apache XML Project. All Rights Reserved.