com.ctc.wstx.dom
Class DOMWrappingWriter

java.lang.Object
  extended by com.ctc.wstx.dom.DOMWrappingWriter
All Implemented Interfaces:
javax.xml.stream.XMLStreamWriter, Validatable, XMLStreamWriter2

public class DOMWrappingWriter
extends java.lang.Object
implements XMLStreamWriter2

This is an adapter class that allows building a DOM tree using XMLStreamWriter interface. It implements a sufficiently complement subset of functionality, so

Note that the implementation is only to be used for use with javax.xml.transform.dom.DOMResult.

Some notes regarding missing/incomplete functionality:


Field Summary
protected  WriterConfig mConfig
           
protected  org.w3c.dom.Node mCurrNode
           
protected  java.lang.String mEncoding
          This member variable is to keep information about encoding that seems to be used for the document (or fragment) to output, if known.
protected  boolean mNsAware
           
 
Method Summary
 void close()
           
 void copyEventFromReader(XMLStreamReader2 r, boolean preserveEventData)
          Method that essentially copies event that the specified reader has just read.
static DOMWrappingWriter createFrom(WriterConfig cfg, javax.xml.transform.dom.DOMResult dst)
           
 void flush()
           
 java.lang.String getEncoding()
          Method that can be called to get information about encoding that this writer is using (or at least claims is using).
 XMLStreamLocation2 getLocation()
          Method that should return current output location, if the writer keeps track of it; null if it does not.
 javax.xml.namespace.NamespaceContext getNamespaceContext()
           
 java.lang.String getPrefix(java.lang.String uri)
           
 java.lang.Object getProperty(java.lang.String name)
           
 boolean isPropertySupported(java.lang.String name)
          Method similar to XMLOutputFactory.isPropertySupported(java.lang.String), used to determine whether a property is supported by the Writer instance.
 void setDefaultNamespace(java.lang.String uri)
           
 void setNamespaceContext(javax.xml.namespace.NamespaceContext context)
           
 void setPrefix(java.lang.String prefix, java.lang.String uri)
           
 boolean setProperty(java.lang.String name, java.lang.Object value)
          Method that can be used to set per-writer properties; a subset of properties one can set via matching XMLOutputFactory2 instance.
 ValidationProblemHandler setValidationProblemHandler(ValidationProblemHandler h)
          Method that application can call to define a custom handler for validation problems encountered during validation process.
 XMLValidator stopValidatingAgainst(XMLValidationSchema schema)
          Method that can be called by application to stop validating output against a schema, for which Validatable.validateAgainst(org.codehaus.stax2.validation.XMLValidationSchema) was called earlier.
 XMLValidator stopValidatingAgainst(XMLValidator validator)
          Method that can be called by application to stop validating output using specified validator.
 XMLValidator validateAgainst(XMLValidationSchema schema)
          Method that will construct a XMLValidator instance from the given schema (unless a validator for that schema has already been added), initialize it if necessary, and make validatable object (reader, writer) call appropriate validation methods from this point on until the end of the document (that is, it's not scoped with sub-trees), or until validator is removed by an explicit call to Validatable.stopValidatingAgainst(org.codehaus.stax2.validation.XMLValidationSchema).
 void writeAttribute(java.lang.String localName, java.lang.String value)
           
 void writeAttribute(java.lang.String namespaceURI, java.lang.String localName, java.lang.String value)
           
 void writeAttribute(java.lang.String prefix, java.lang.String namespaceURI, java.lang.String localName, java.lang.String value)
           
 void writeCData(char[] text, int start, int len)
           
 void writeCData(java.lang.String data)
           
 void writeCharacters(char[] text, int start, int len)
           
 void writeCharacters(java.lang.String text)
           
 void writeComment(java.lang.String data)
           
 void writeDefaultNamespace(java.lang.String namespaceURI)
           
 void writeDTD(java.lang.String dtd)
           
 void writeDTD(java.lang.String rootName, java.lang.String systemId, java.lang.String publicId, java.lang.String internalSubset)
           
 void writeEmptyElement(java.lang.String localName)
           
 void writeEmptyElement(java.lang.String namespaceURI, java.lang.String localName)
           
 void writeEmptyElement(java.lang.String prefix, java.lang.String localName, java.lang.String namespaceURI)
           
 void writeEndDocument()
           
 void writeEndElement()
           
 void writeEntityRef(java.lang.String name)
           
 void writeFullEndElement()
          Method similar to XMLStreamWriter.writeEndElement(), but that will always write the full end element, instead of empty element.
 void writeNamespace(java.lang.String prefix, java.lang.String namespaceURI)
           
 void writeProcessingInstruction(java.lang.String target)
           
 void writeProcessingInstruction(java.lang.String target, java.lang.String data)
           
 void writeRaw(char[] text, int offset, int length)
          Method that writes specified content as is, without encoding or deciphering it in any way.
 void writeRaw(java.lang.String text)
          Method that writes specified content as is, without encoding or deciphering it in any way.
 void writeRaw(java.lang.String text, int start, int offset)
           
 void writeStartDocument()
           
 void writeStartDocument(java.lang.String version)
           
 void writeStartDocument(java.lang.String encoding, java.lang.String version)
           
 void writeStartDocument(java.lang.String version, java.lang.String encoding, boolean standAlone)
           
 void writeStartElement(java.lang.String localName)
           
 void writeStartElement(java.lang.String namespaceURI, java.lang.String localName)
           
 void writeStartElement(java.lang.String prefix, java.lang.String localName, java.lang.String namespaceURI)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

mConfig

protected final WriterConfig mConfig

mNsAware

protected final boolean mNsAware

mEncoding

protected java.lang.String mEncoding
This member variable is to keep information about encoding that seems to be used for the document (or fragment) to output, if known.


mCurrNode

protected org.w3c.dom.Node mCurrNode
Method Detail

createFrom

public static DOMWrappingWriter createFrom(WriterConfig cfg,
                                           javax.xml.transform.dom.DOMResult dst)
                                    throws javax.xml.stream.XMLStreamException
Throws:
javax.xml.stream.XMLStreamException

close

public void close()
Specified by:
close in interface javax.xml.stream.XMLStreamWriter

flush

public void flush()
Specified by:
flush in interface javax.xml.stream.XMLStreamWriter

getNamespaceContext

public javax.xml.namespace.NamespaceContext getNamespaceContext()
Specified by:
getNamespaceContext in interface javax.xml.stream.XMLStreamWriter

getPrefix

public java.lang.String getPrefix(java.lang.String uri)
Specified by:
getPrefix in interface javax.xml.stream.XMLStreamWriter

getProperty

public java.lang.Object getProperty(java.lang.String name)
Specified by:
getProperty in interface javax.xml.stream.XMLStreamWriter

setDefaultNamespace

public void setDefaultNamespace(java.lang.String uri)
Specified by:
setDefaultNamespace in interface javax.xml.stream.XMLStreamWriter

setNamespaceContext

public void setNamespaceContext(javax.xml.namespace.NamespaceContext context)
Specified by:
setNamespaceContext in interface javax.xml.stream.XMLStreamWriter

setPrefix

public void setPrefix(java.lang.String prefix,
                      java.lang.String uri)
Specified by:
setPrefix in interface javax.xml.stream.XMLStreamWriter

writeAttribute

public void writeAttribute(java.lang.String localName,
                           java.lang.String value)
Specified by:
writeAttribute in interface javax.xml.stream.XMLStreamWriter

writeAttribute

public void writeAttribute(java.lang.String namespaceURI,
                           java.lang.String localName,
                           java.lang.String value)
Specified by:
writeAttribute in interface javax.xml.stream.XMLStreamWriter

writeAttribute

public void writeAttribute(java.lang.String prefix,
                           java.lang.String namespaceURI,
                           java.lang.String localName,
                           java.lang.String value)
Specified by:
writeAttribute in interface javax.xml.stream.XMLStreamWriter

writeCData

public void writeCData(java.lang.String data)
Specified by:
writeCData in interface javax.xml.stream.XMLStreamWriter

writeCharacters

public void writeCharacters(char[] text,
                            int start,
                            int len)
Specified by:
writeCharacters in interface javax.xml.stream.XMLStreamWriter

writeCharacters

public void writeCharacters(java.lang.String text)
Specified by:
writeCharacters in interface javax.xml.stream.XMLStreamWriter

writeComment

public void writeComment(java.lang.String data)
Specified by:
writeComment in interface javax.xml.stream.XMLStreamWriter

writeDefaultNamespace

public void writeDefaultNamespace(java.lang.String namespaceURI)
Specified by:
writeDefaultNamespace in interface javax.xml.stream.XMLStreamWriter

writeDTD

public void writeDTD(java.lang.String dtd)
Specified by:
writeDTD in interface javax.xml.stream.XMLStreamWriter

writeEmptyElement

public void writeEmptyElement(java.lang.String localName)
Specified by:
writeEmptyElement in interface javax.xml.stream.XMLStreamWriter

writeEmptyElement

public void writeEmptyElement(java.lang.String namespaceURI,
                              java.lang.String localName)
Specified by:
writeEmptyElement in interface javax.xml.stream.XMLStreamWriter

writeEmptyElement

public void writeEmptyElement(java.lang.String prefix,
                              java.lang.String localName,
                              java.lang.String namespaceURI)
Specified by:
writeEmptyElement in interface javax.xml.stream.XMLStreamWriter

writeEndDocument

public void writeEndDocument()
Specified by:
writeEndDocument in interface javax.xml.stream.XMLStreamWriter

writeEndElement

public void writeEndElement()
Specified by:
writeEndElement in interface javax.xml.stream.XMLStreamWriter

writeEntityRef

public void writeEntityRef(java.lang.String name)
Specified by:
writeEntityRef in interface javax.xml.stream.XMLStreamWriter

writeNamespace

public void writeNamespace(java.lang.String prefix,
                           java.lang.String namespaceURI)
Specified by:
writeNamespace in interface javax.xml.stream.XMLStreamWriter

writeProcessingInstruction

public void writeProcessingInstruction(java.lang.String target)
Specified by:
writeProcessingInstruction in interface javax.xml.stream.XMLStreamWriter

writeProcessingInstruction

public void writeProcessingInstruction(java.lang.String target,
                                       java.lang.String data)
Specified by:
writeProcessingInstruction in interface javax.xml.stream.XMLStreamWriter

writeStartDocument

public void writeStartDocument()
Specified by:
writeStartDocument in interface javax.xml.stream.XMLStreamWriter

writeStartDocument

public void writeStartDocument(java.lang.String version)
Specified by:
writeStartDocument in interface javax.xml.stream.XMLStreamWriter

writeStartDocument

public void writeStartDocument(java.lang.String encoding,
                               java.lang.String version)
Specified by:
writeStartDocument in interface javax.xml.stream.XMLStreamWriter

writeStartElement

public void writeStartElement(java.lang.String localName)
Specified by:
writeStartElement in interface javax.xml.stream.XMLStreamWriter

writeStartElement

public void writeStartElement(java.lang.String namespaceURI,
                              java.lang.String localName)
Specified by:
writeStartElement in interface javax.xml.stream.XMLStreamWriter

writeStartElement

public void writeStartElement(java.lang.String prefix,
                              java.lang.String localName,
                              java.lang.String namespaceURI)
Specified by:
writeStartElement in interface javax.xml.stream.XMLStreamWriter

isPropertySupported

public boolean isPropertySupported(java.lang.String name)
Description copied from interface: XMLStreamWriter2
Method similar to XMLOutputFactory.isPropertySupported(java.lang.String), used to determine whether a property is supported by the Writer instance. This means that this method may return false for some properties that the output factory does support: specifically, it should only return true if the value is mutable on per-instance basis. False means that either the property is not recognized, or is not mutable via writer instance.

Specified by:
isPropertySupported in interface XMLStreamWriter2

setProperty

public boolean setProperty(java.lang.String name,
                           java.lang.Object value)
Description copied from interface: XMLStreamWriter2
Method that can be used to set per-writer properties; a subset of properties one can set via matching XMLOutputFactory2 instance. Exactly which methods are mutable is implementation specific.

Specified by:
setProperty in interface XMLStreamWriter2
Parameters:
name - Name of the property to set
value - Value to set property to.
Returns:
True, if the specified property was succesfully set to specified value; false if its value was not changed

validateAgainst

public XMLValidator validateAgainst(XMLValidationSchema schema)
                             throws javax.xml.stream.XMLStreamException
Description copied from interface: Validatable
Method that will construct a XMLValidator instance from the given schema (unless a validator for that schema has already been added), initialize it if necessary, and make validatable object (reader, writer) call appropriate validation methods from this point on until the end of the document (that is, it's not scoped with sub-trees), or until validator is removed by an explicit call to Validatable.stopValidatingAgainst(org.codehaus.stax2.validation.XMLValidationSchema).

Note that while this method can be called at any point in output processing, validator instances are not required to be able to handle addition at other points than right before outputting the root element.

Specified by:
validateAgainst in interface Validatable
Returns:
Validator instance constructed, if validator was added, or null if a validator for the schema has already been constructed.
Throws:
javax.xml.stream.XMLStreamException

stopValidatingAgainst

public XMLValidator stopValidatingAgainst(XMLValidationSchema schema)
                                   throws javax.xml.stream.XMLStreamException
Description copied from interface: Validatable
Method that can be called by application to stop validating output against a schema, for which Validatable.validateAgainst(org.codehaus.stax2.validation.XMLValidationSchema) was called earlier.

Specified by:
stopValidatingAgainst in interface Validatable
Returns:
Validator instance created from the schema that was removed, if one was in use; null if no such schema in use.
Throws:
javax.xml.stream.XMLStreamException

stopValidatingAgainst

public XMLValidator stopValidatingAgainst(XMLValidator validator)
                                   throws javax.xml.stream.XMLStreamException
Description copied from interface: Validatable
Method that can be called by application to stop validating output using specified validator. The validator passed should be an earlier return value for a call to Validatable.validateAgainst(org.codehaus.stax2.validation.XMLValidationSchema).

Note: the specified validator is compared for identity with validators in use, not for equality.

Specified by:
stopValidatingAgainst in interface Validatable
Returns:
Validator instance found (ie. argument validator) if it was being used for validating current document; null if not.
Throws:
javax.xml.stream.XMLStreamException

setValidationProblemHandler

public ValidationProblemHandler setValidationProblemHandler(ValidationProblemHandler h)
Description copied from interface: Validatable
Method that application can call to define a custom handler for validation problems encountered during validation process.

Specified by:
setValidationProblemHandler in interface Validatable
Parameters:
h - Handler to install, if non null; if null, indicates that the default (implementation-specific) handling should be used
Returns:
Previously set validation problem handler, if any; null if none was set

getLocation

public XMLStreamLocation2 getLocation()
Description copied from interface: XMLStreamWriter2
Method that should return current output location, if the writer keeps track of it; null if it does not.

Specified by:
getLocation in interface XMLStreamWriter2

getEncoding

public java.lang.String getEncoding()
Description copied from interface: XMLStreamWriter2
Method that can be called to get information about encoding that this writer is using (or at least claims is using). That is, it returns name of encoding specified when (in order of priority):

Specified by:
getEncoding in interface XMLStreamWriter2

writeCData

public void writeCData(char[] text,
                       int start,
                       int len)
                throws javax.xml.stream.XMLStreamException
Specified by:
writeCData in interface XMLStreamWriter2
Throws:
javax.xml.stream.XMLStreamException

writeDTD

public void writeDTD(java.lang.String rootName,
                     java.lang.String systemId,
                     java.lang.String publicId,
                     java.lang.String internalSubset)
              throws javax.xml.stream.XMLStreamException
Specified by:
writeDTD in interface XMLStreamWriter2
Throws:
javax.xml.stream.XMLStreamException

writeFullEndElement

public void writeFullEndElement()
                         throws javax.xml.stream.XMLStreamException
Description copied from interface: XMLStreamWriter2
Method similar to XMLStreamWriter.writeEndElement(), but that will always write the full end element, instead of empty element. This only matters for cases where the element itself has no content, and if writer is allowed to write empty elements when it encounters such start/end element write pairs.

Specified by:
writeFullEndElement in interface XMLStreamWriter2
Throws:
javax.xml.stream.XMLStreamException

writeStartDocument

public void writeStartDocument(java.lang.String version,
                               java.lang.String encoding,
                               boolean standAlone)
                        throws javax.xml.stream.XMLStreamException
Specified by:
writeStartDocument in interface XMLStreamWriter2
Throws:
javax.xml.stream.XMLStreamException

writeRaw

public void writeRaw(java.lang.String text)
              throws javax.xml.stream.XMLStreamException
Description copied from interface: XMLStreamWriter2
Method that writes specified content as is, without encoding or deciphering it in any way. It will not update state of the writer (except by possibly flushing output of previous writes, like finishing a start element), nor be validated in any way. As such, care must be taken, if this method is used.

Method is usually used when encapsulating output from another writer as a sub-tree, or when passing through XML fragments.

Specified by:
writeRaw in interface XMLStreamWriter2
Throws:
javax.xml.stream.XMLStreamException

writeRaw

public void writeRaw(java.lang.String text,
                     int start,
                     int offset)
              throws javax.xml.stream.XMLStreamException
Specified by:
writeRaw in interface XMLStreamWriter2
Throws:
javax.xml.stream.XMLStreamException

writeRaw

public void writeRaw(char[] text,
                     int offset,
                     int length)
              throws javax.xml.stream.XMLStreamException
Description copied from interface: XMLStreamWriter2
Method that writes specified content as is, without encoding or deciphering it in any way. It will not update state of the writer (except by possibly flushing output of previous writes, like finishing a start element), nor be validated in any way. As such, care must be taken, if this method is used.

Method is usually used when encapsulating output from another writer as a sub-tree, or when passing through XML fragments.

Specified by:
writeRaw in interface XMLStreamWriter2
Throws:
javax.xml.stream.XMLStreamException

copyEventFromReader

public void copyEventFromReader(XMLStreamReader2 r,
                                boolean preserveEventData)
                         throws javax.xml.stream.XMLStreamException
Description copied from interface: XMLStreamWriter2
Method that essentially copies event that the specified reader has just read. This can be both more convenient (no need to worry about details) and more efficient than separately calling access methods of the reader and write methods of the writer, since writer may know more about reader than the application (and may be able to use non-public methods)

Specified by:
copyEventFromReader in interface XMLStreamWriter2
Parameters:
r - Reader to use for accessing event to copy
preserveEventData - If true, writer is not allowed to change the state of the reader (so that all the data associated with the current event has to be preserved); if false, writer is allowed to use methods that may cause some data to be discarded. Setting this to false may improve the performance, since it may allow full no-copy streaming of data, especially textual contents.
Throws:
javax.xml.stream.XMLStreamException