org.apache.xml.serialize

Class DOMSerializerImpl

Implemented Interfaces:
DOMConfiguration, LSSerializer

public class DOMSerializerImpl
extends java.lang.Object
implements LSSerializer, 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 476047 2006-11-17 04:27:45Z mrglavas $
Authors:
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 static short
INFOSET
protected static short
NAMESPACES
protected static short
NSDECL
protected static short
PRETTY_PRINT
protected static short
SPLITCDATA
protected static short
WELLFORMED
protected static short
XMLDECL
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.

Constructor Summary

DOMSerializerImpl()
Constructs a new LSSerializer.

Method Summary

boolean
canSetParameter(String name, Object state)
DOM L3-EXPERIMENTAL: Check if parameter can be set
DOMConfiguration
getDomConfig()
LSSerializerFilter
getFilter()
When the application provides a filter, the serializer will call out to the filter before serializing each Node.
String
getNewLine()
DOM L3 EXPERIMENTAL: The end-of-line sequence of characters to be used in the XML being written out.
Object
getParameter(String name)
DOM L3-EXPERIMENTAL: Getter for boolean and object parameters
DOMStringList
getParameterNames()
DOM Level 3 Core CR - Experimental.
void
setFilter(LSSerializerFilter filter)
When the application provides a filter, the serializer will call out to the filter before serializing each Node.
void
setNewLine(String newLine)
DOM L3 EXPERIMENTAL: The end-of-line sequence of characters to be used in the XML being written out.
void
setParameter(String name, Object value)
DOM L3-EXPERIMENTAL: Setter for boolean and object parameters
boolean
write(Node node, LSOutput destination)
Serialize the specified node as described above in the general description of the LSSerializer interface.
String
writeToString(Node wnode)
DOM L3 EXPERIMENTAL: Serialize the specified node as described above in the description of LSSerializer.
boolean
writeToURI(Node node, String URI)
Serialize the specified node as described above in the general description of the LSSerializer interface.

Field Details

CDATA

protected static final short CDATA
Field Value:
8

COMMENTS

protected static final short COMMENTS
Field Value:
32

DISCARDDEFAULT

protected static final short DISCARDDEFAULT
Field Value:
64

DOM_ELEMENT_CONTENT_WHITESPACE

protected static final short DOM_ELEMENT_CONTENT_WHITESPACE
Field Value:
1024

ENTITIES

protected static final short ENTITIES
Field Value:
4

INFOSET

protected static final short INFOSET
Field Value:
128

NAMESPACES

protected static final short NAMESPACES
Field Value:
1

NSDECL

protected static final short NSDECL
Field Value:
512

PRETTY_PRINT

protected static final short PRETTY_PRINT
Field Value:
2048

SPLITCDATA

protected static final short SPLITCDATA
Field Value:
16

WELLFORMED

protected static final short WELLFORMED
Field Value:
2

XMLDECL

protected static final short XMLDECL
Field Value:
256

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.

Constructor Details

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 Details

canSetParameter

public boolean canSetParameter(String name,
                               Object state)
DOM L3-EXPERIMENTAL: Check if parameter can be set

getDomConfig

public DOMConfiguration getDomConfig()

getFilter

public 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.

getNewLine

public 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

The default value for this attribute is null.

getParameter

public Object getParameter(String name)
            throws DOMException
DOM L3-EXPERIMENTAL: Getter for boolean and object parameters

getParameterNames

public 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.

setFilter

public void setFilter(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.

setNewLine

public void setNewLine(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

The default value for this attribute is null.

setParameter

public void setParameter(String name,
                         Object value)
            throws DOMException
DOM L3-EXPERIMENTAL: Setter for boolean and object parameters

write

public boolean write(Node node,
                     LSOutput destination)
            throws 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.
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.

writeToString

public String writeToString(Node wnode)
            throws DOMException,
                   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.
Parameters:
wnode - The node to be written.
Returns:
Returns the serialized data

writeToURI

public boolean writeToURI(Node node,
                          String URI)
            throws 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.
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-2007 The Apache Software Foundation. All Rights Reserved.