Package com.ctc.wstx.dom
Class WstxDOMWrappingWriter
- java.lang.Object
-
- org.codehaus.stax2.ri.dom.DOMWrappingWriter
-
- com.ctc.wstx.dom.WstxDOMWrappingWriter
-
- All Implemented Interfaces:
javax.xml.stream.XMLStreamWriter
,org.codehaus.stax2.typed.TypedXMLStreamWriter
,org.codehaus.stax2.validation.Validatable
,org.codehaus.stax2.XMLStreamWriter2
public class WstxDOMWrappingWriter extends org.codehaus.stax2.ri.dom.DOMWrappingWriter
This is an adapter class that allows building a DOM tree usingXMLStreamWriter
interface.Note that the implementation is only to be used for use with
javax.xml.transform.dom.DOMResult
.Some notes regarding missing/incomplete functionality:
- Validation functionality not implemented
- Author:
- Tatu Saloranta, Dan Diephouse
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.String
ERR_NSDECL_WRONG_STATE
protected java.lang.String
mAutomaticNsPrefix
protected int[]
mAutoNsSeq
for NsRepairing modeprotected WriterConfig
mConfig
protected DOMOutputElement
mCurrElem
This element is the current context element, under which all other nodes are added, until matching end element is output.protected DOMOutputElement
mOpenElement
This element is non-null right after a call to eitherwriteStartElement
andwriteEmptyElement
, and can be used to add attributes and namespace declarations.protected java.lang.String
mSuggestedDefNs
(package private) java.util.HashMap<java.lang.String,java.lang.String>
mSuggestedPrefixes
Map that contains URI-to-prefix entries that point out suggested prefixes for URIs.
-
Constructor Summary
Constructors Modifier Constructor Description private
WstxDOMWrappingWriter(WriterConfig cfg, org.w3c.dom.Node treeRoot)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
appendLeaf(org.w3c.dom.Node n)
static WstxDOMWrappingWriter
createFrom(WriterConfig cfg, javax.xml.transform.dom.DOMResult dst)
protected void
createStartElem(java.lang.String nsURI, java.lang.String prefix, java.lang.String localName, boolean isEmpty)
Method called by all start element write methods.protected java.lang.String
findElemPrefix(java.lang.String nsURI, DOMOutputElement elem)
Method called to find an existing prefix for the given namespace, if any exists in the scope.protected java.lang.String
findOrCreateAttrPrefix(java.lang.String suggPrefix, java.lang.String nsURI, DOMOutputElement elem)
Method called to somehow find a prefix for given namespace, to be used for a new start element; either use an existing one, or generate a new one.protected java.lang.String
generateElemPrefix(java.lang.String suggPrefix, java.lang.String nsURI, DOMOutputElement elem)
Method called afterfindElemPrefix(java.lang.String, com.ctc.wstx.dom.DOMOutputElement)
has returned null, to create and bind a namespace mapping for specified namespace.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)
protected void
outputAttribute(java.lang.String nsURI, java.lang.String prefix, java.lang.String localName, java.lang.String value)
void
setDefaultNamespace(java.lang.String uri)
void
setPrefix(java.lang.String prefix, java.lang.String uri)
boolean
setProperty(java.lang.String name, java.lang.Object value)
private java.lang.String
validateElemPrefix(java.lang.String prefix, java.lang.String nsURI, DOMOutputElement elem)
void
writeAttribute(java.lang.String localName, java.lang.String value)
void
writeAttribute(java.lang.String nsURI, java.lang.String localName, java.lang.String value)
void
writeAttribute(java.lang.String prefix, java.lang.String nsURI, java.lang.String localName, java.lang.String value)
void
writeDefaultNamespace(java.lang.String nsURI)
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 nsURI, java.lang.String localName)
void
writeEmptyElement(java.lang.String prefix, java.lang.String localName, java.lang.String nsURI)
void
writeEndDocument()
void
writeEndElement()
void
writeNamespace(java.lang.String prefix, java.lang.String nsURI)
void
writeStartElement(java.lang.String localName)
void
writeStartElement(java.lang.String nsURI, java.lang.String localName)
void
writeStartElement(java.lang.String prefix, java.lang.String localName, java.lang.String nsURI)
-
Methods inherited from class org.codehaus.stax2.ri.dom.DOMWrappingWriter
close, closeCompletely, copyEventFromReader, flush, getEncoding, getLocation, getValueEncoder, reportUnsupported, serializeQNameValue, setNamespaceContext, setValidationProblemHandler, stopValidatingAgainst, stopValidatingAgainst, throwOutputError, throwOutputError, validateAgainst, writeBinary, writeBinary, writeBinaryAttribute, writeBinaryAttribute, writeBoolean, writeBooleanAttribute, writeCData, writeCData, writeCharacters, writeCharacters, writeComment, writeDecimal, writeDecimalAttribute, writeDouble, writeDoubleArray, writeDoubleArrayAttribute, writeDoubleAttribute, writeDTD, writeEntityRef, writeFloat, writeFloatArray, writeFloatArrayAttribute, writeFloatAttribute, writeFullEndElement, writeInt, writeIntArray, writeIntArrayAttribute, writeIntAttribute, writeInteger, writeIntegerAttribute, writeLong, writeLongArray, writeLongArrayAttribute, writeLongAttribute, writeProcessingInstruction, writeProcessingInstruction, writeQName, writeQNameAttribute, writeRaw, writeRaw, writeRaw, writeSpace, writeSpace, writeStartDocument, writeStartDocument, writeStartDocument, writeStartDocument
-
-
-
-
Field Detail
-
ERR_NSDECL_WRONG_STATE
protected static final java.lang.String ERR_NSDECL_WRONG_STATE
- See Also:
- Constant Field Values
-
mConfig
protected final WriterConfig mConfig
-
mCurrElem
protected DOMOutputElement mCurrElem
This element is the current context element, under which all other nodes are added, until matching end element is output. Null outside of the main element tree.Note: explicit empty element (written using
writeEmptyElement
) will never become current element.
-
mOpenElement
protected DOMOutputElement mOpenElement
This element is non-null right after a call to eitherwriteStartElement
andwriteEmptyElement
, and can be used to add attributes and namespace declarations.Note: while this is often the same as
mCurrElem
, it's not always. Specifically, an empty element (written explicitly usingwriteEmptyElement
) will become open element but NOT current element. Conversely, regular elements will remain current element when non elements are written (text, comments, PI), but not the open element.
-
mAutoNsSeq
protected int[] mAutoNsSeq
for NsRepairing mode
-
mSuggestedDefNs
protected java.lang.String mSuggestedDefNs
-
mAutomaticNsPrefix
protected java.lang.String mAutomaticNsPrefix
-
mSuggestedPrefixes
java.util.HashMap<java.lang.String,java.lang.String> mSuggestedPrefixes
Map that contains URI-to-prefix entries that point out suggested prefixes for URIs. These are populated by calls tosetPrefix(java.lang.String, java.lang.String)
, and they are only used as hints for binding; if there are conflicts, repairing writer can just use some other prefix.
-
-
Constructor Detail
-
WstxDOMWrappingWriter
private WstxDOMWrappingWriter(WriterConfig cfg, org.w3c.dom.Node treeRoot) throws javax.xml.stream.XMLStreamException
- Throws:
javax.xml.stream.XMLStreamException
-
-
Method Detail
-
createFrom
public static WstxDOMWrappingWriter createFrom(WriterConfig cfg, javax.xml.transform.dom.DOMResult dst) throws javax.xml.stream.XMLStreamException
- Throws:
javax.xml.stream.XMLStreamException
-
getNamespaceContext
public javax.xml.namespace.NamespaceContext getNamespaceContext()
- Specified by:
getNamespaceContext
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
getNamespaceContext
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
-
getPrefix
public java.lang.String getPrefix(java.lang.String uri)
- Specified by:
getPrefix
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
getPrefix
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
-
getProperty
public java.lang.Object getProperty(java.lang.String name)
- Specified by:
getProperty
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
getProperty
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
-
setDefaultNamespace
public void setDefaultNamespace(java.lang.String uri)
- Specified by:
setDefaultNamespace
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
setDefaultNamespace
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
-
setPrefix
public void setPrefix(java.lang.String prefix, java.lang.String uri) throws javax.xml.stream.XMLStreamException
- Specified by:
setPrefix
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
setPrefix
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
- Throws:
javax.xml.stream.XMLStreamException
-
writeAttribute
public void writeAttribute(java.lang.String localName, java.lang.String value) throws javax.xml.stream.XMLStreamException
- Specified by:
writeAttribute
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
writeAttribute
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
- Throws:
javax.xml.stream.XMLStreamException
-
writeAttribute
public void writeAttribute(java.lang.String nsURI, java.lang.String localName, java.lang.String value) throws javax.xml.stream.XMLStreamException
- Specified by:
writeAttribute
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
writeAttribute
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
- Throws:
javax.xml.stream.XMLStreamException
-
writeAttribute
public void writeAttribute(java.lang.String prefix, java.lang.String nsURI, java.lang.String localName, java.lang.String value) throws javax.xml.stream.XMLStreamException
- Specified by:
writeAttribute
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
writeAttribute
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
- Throws:
javax.xml.stream.XMLStreamException
-
writeDefaultNamespace
public void writeDefaultNamespace(java.lang.String nsURI)
- Specified by:
writeDefaultNamespace
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
writeDefaultNamespace
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
-
writeEmptyElement
public void writeEmptyElement(java.lang.String localName) throws javax.xml.stream.XMLStreamException
- Specified by:
writeEmptyElement
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
writeEmptyElement
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
- Throws:
javax.xml.stream.XMLStreamException
-
writeEmptyElement
public void writeEmptyElement(java.lang.String nsURI, java.lang.String localName) throws javax.xml.stream.XMLStreamException
- Specified by:
writeEmptyElement
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
writeEmptyElement
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
- Throws:
javax.xml.stream.XMLStreamException
-
writeEmptyElement
public void writeEmptyElement(java.lang.String prefix, java.lang.String localName, java.lang.String nsURI) throws javax.xml.stream.XMLStreamException
- Specified by:
writeEmptyElement
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
writeEmptyElement
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
- Throws:
javax.xml.stream.XMLStreamException
-
writeEndDocument
public void writeEndDocument()
- Specified by:
writeEndDocument
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
writeEndDocument
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
-
writeEndElement
public void writeEndElement()
-
writeNamespace
public void writeNamespace(java.lang.String prefix, java.lang.String nsURI) throws javax.xml.stream.XMLStreamException
- Throws:
javax.xml.stream.XMLStreamException
-
writeStartElement
public void writeStartElement(java.lang.String localName) throws javax.xml.stream.XMLStreamException
- Throws:
javax.xml.stream.XMLStreamException
-
writeStartElement
public void writeStartElement(java.lang.String nsURI, java.lang.String localName) throws javax.xml.stream.XMLStreamException
- Throws:
javax.xml.stream.XMLStreamException
-
writeStartElement
public void writeStartElement(java.lang.String prefix, java.lang.String localName, java.lang.String nsURI) throws javax.xml.stream.XMLStreamException
- Throws:
javax.xml.stream.XMLStreamException
-
isPropertySupported
public boolean isPropertySupported(java.lang.String name)
- Specified by:
isPropertySupported
in interfaceorg.codehaus.stax2.XMLStreamWriter2
- Specified by:
isPropertySupported
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
-
setProperty
public boolean setProperty(java.lang.String name, java.lang.Object value)
- Specified by:
setProperty
in interfaceorg.codehaus.stax2.XMLStreamWriter2
- Specified by:
setProperty
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
-
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 interfaceorg.codehaus.stax2.XMLStreamWriter2
- Specified by:
writeDTD
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
- Throws:
javax.xml.stream.XMLStreamException
-
appendLeaf
protected void appendLeaf(org.w3c.dom.Node n) throws java.lang.IllegalStateException
- Specified by:
appendLeaf
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
- Throws:
java.lang.IllegalStateException
-
createStartElem
protected void createStartElem(java.lang.String nsURI, java.lang.String prefix, java.lang.String localName, boolean isEmpty) throws javax.xml.stream.XMLStreamException
Method called by all start element write methods.- Parameters:
nsURI
- Namespace URI to use: null and empty String denote 'no namespace'- Throws:
javax.xml.stream.XMLStreamException
-
outputAttribute
protected void outputAttribute(java.lang.String nsURI, java.lang.String prefix, java.lang.String localName, java.lang.String value) throws javax.xml.stream.XMLStreamException
- Throws:
javax.xml.stream.XMLStreamException
-
validateElemPrefix
private final java.lang.String validateElemPrefix(java.lang.String prefix, java.lang.String nsURI, DOMOutputElement elem) throws javax.xml.stream.XMLStreamException
- Throws:
javax.xml.stream.XMLStreamException
-
findElemPrefix
protected final java.lang.String findElemPrefix(java.lang.String nsURI, DOMOutputElement elem) throws javax.xml.stream.XMLStreamException
Method called to find an existing prefix for the given namespace, if any exists in the scope. If one is found, it's returned (including "" for the current default namespace); if not, null is returned.- Parameters:
nsURI
- URI of namespace for which we need a prefix- Throws:
javax.xml.stream.XMLStreamException
-
generateElemPrefix
protected final java.lang.String generateElemPrefix(java.lang.String suggPrefix, java.lang.String nsURI, DOMOutputElement elem) throws javax.xml.stream.XMLStreamException
Method called afterfindElemPrefix(java.lang.String, com.ctc.wstx.dom.DOMOutputElement)
has returned null, to create and bind a namespace mapping for specified namespace.- Throws:
javax.xml.stream.XMLStreamException
-
findOrCreateAttrPrefix
protected final java.lang.String findOrCreateAttrPrefix(java.lang.String suggPrefix, java.lang.String nsURI, DOMOutputElement elem) throws javax.xml.stream.XMLStreamException
Method called to somehow find a prefix for given namespace, to be used for a new start element; either use an existing one, or generate a new one. If a new mapping needs to be generated, it will also be automatically bound, and necessary namespace declaration output.- Parameters:
suggPrefix
- Suggested prefix to bind, if any; may be null to indicate "no preference"nsURI
- URI of namespace for which we need a prefixelem
- Currently open start element, on which the attribute will be added.- Throws:
javax.xml.stream.XMLStreamException
-
-