Package com.ctc.wstx.dom
Class WstxDOMWrappingWriter
- java.lang.Object
-
- org.codehaus.stax2.ri.dom.DOMWrappingWriter
-
- com.ctc.wstx.dom.WstxDOMWrappingWriter
-
- All Implemented Interfaces:
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 String
ERR_NSDECL_WRONG_STATE
protected 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 String
mSuggestedDefNs
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
appendLeaf(Node n)
static WstxDOMWrappingWriter
createFrom(WriterConfig cfg, DOMResult dst)
protected void
createStartElem(String nsURI, String prefix, String localName, boolean isEmpty)
Method called by all start element write methods.protected String
findElemPrefix(String nsURI, DOMOutputElement elem)
Method called to find an existing prefix for the given namespace, if any exists in the scope.protected String
findOrCreateAttrPrefix(String suggPrefix, 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 String
generateElemPrefix(String suggPrefix, 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.NamespaceContext
getNamespaceContext()
String
getPrefix(String uri)
Object
getProperty(String name)
boolean
isPropertySupported(String name)
protected void
outputAttribute(String nsURI, String prefix, String localName, String value)
void
setDefaultNamespace(String uri)
void
setPrefix(String prefix, String uri)
boolean
setProperty(String name, Object value)
void
writeAttribute(String localName, String value)
void
writeAttribute(String nsURI, String localName, String value)
void
writeAttribute(String prefix, String nsURI, String localName, String value)
void
writeDefaultNamespace(String nsURI)
void
writeDTD(String rootName, String systemId, String publicId, String internalSubset)
void
writeEmptyElement(String localName)
void
writeEmptyElement(String nsURI, String localName)
void
writeEmptyElement(String prefix, String localName, String nsURI)
void
writeEndDocument()
void
writeEndElement()
void
writeNamespace(String prefix, String nsURI)
void
writeStartElement(String localName)
void
writeStartElement(String nsURI, String localName)
void
writeStartElement(String prefix, String localName, 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 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 String mSuggestedDefNs
-
mAutomaticNsPrefix
protected String mAutomaticNsPrefix
-
-
Method Detail
-
createFrom
public static WstxDOMWrappingWriter createFrom(WriterConfig cfg, DOMResult dst) throws XMLStreamException
- Throws:
XMLStreamException
-
getNamespaceContext
public NamespaceContext getNamespaceContext()
- Specified by:
getNamespaceContext
in interfaceXMLStreamWriter
- Specified by:
getNamespaceContext
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
-
getPrefix
public String getPrefix(String uri)
- Specified by:
getPrefix
in interfaceXMLStreamWriter
- Specified by:
getPrefix
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
-
getProperty
public Object getProperty(String name)
- Specified by:
getProperty
in interfaceXMLStreamWriter
- Specified by:
getProperty
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
-
setDefaultNamespace
public void setDefaultNamespace(String uri)
- Specified by:
setDefaultNamespace
in interfaceXMLStreamWriter
- Specified by:
setDefaultNamespace
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
-
setPrefix
public void setPrefix(String prefix, String uri) throws XMLStreamException
- Specified by:
setPrefix
in interfaceXMLStreamWriter
- Specified by:
setPrefix
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
- Throws:
XMLStreamException
-
writeAttribute
public void writeAttribute(String localName, String value) throws XMLStreamException
- Specified by:
writeAttribute
in interfaceXMLStreamWriter
- Specified by:
writeAttribute
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
- Throws:
XMLStreamException
-
writeAttribute
public void writeAttribute(String nsURI, String localName, String value) throws XMLStreamException
- Specified by:
writeAttribute
in interfaceXMLStreamWriter
- Specified by:
writeAttribute
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
- Throws:
XMLStreamException
-
writeAttribute
public void writeAttribute(String prefix, String nsURI, String localName, String value) throws XMLStreamException
- Specified by:
writeAttribute
in interfaceXMLStreamWriter
- Specified by:
writeAttribute
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
- Throws:
XMLStreamException
-
writeDefaultNamespace
public void writeDefaultNamespace(String nsURI)
- Specified by:
writeDefaultNamespace
in interfaceXMLStreamWriter
- Specified by:
writeDefaultNamespace
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
-
writeEmptyElement
public void writeEmptyElement(String localName) throws XMLStreamException
- Specified by:
writeEmptyElement
in interfaceXMLStreamWriter
- Specified by:
writeEmptyElement
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
- Throws:
XMLStreamException
-
writeEmptyElement
public void writeEmptyElement(String nsURI, String localName) throws XMLStreamException
- Specified by:
writeEmptyElement
in interfaceXMLStreamWriter
- Specified by:
writeEmptyElement
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
- Throws:
XMLStreamException
-
writeEmptyElement
public void writeEmptyElement(String prefix, String localName, String nsURI) throws XMLStreamException
- Specified by:
writeEmptyElement
in interfaceXMLStreamWriter
- Specified by:
writeEmptyElement
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
- Throws:
XMLStreamException
-
writeEndDocument
public void writeEndDocument()
- Specified by:
writeEndDocument
in interfaceXMLStreamWriter
- Specified by:
writeEndDocument
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
-
writeEndElement
public void writeEndElement()
-
writeNamespace
public void writeNamespace(String prefix, String nsURI) throws XMLStreamException
- Throws:
XMLStreamException
-
writeStartElement
public void writeStartElement(String localName) throws XMLStreamException
- Throws:
XMLStreamException
-
writeStartElement
public void writeStartElement(String nsURI, String localName) throws XMLStreamException
- Throws:
XMLStreamException
-
writeStartElement
public void writeStartElement(String prefix, String localName, String nsURI) throws XMLStreamException
- Throws:
XMLStreamException
-
isPropertySupported
public boolean isPropertySupported(String name)
- Specified by:
isPropertySupported
in interfaceorg.codehaus.stax2.XMLStreamWriter2
- Specified by:
isPropertySupported
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
-
setProperty
public boolean setProperty(String name, Object value)
- Specified by:
setProperty
in interfaceorg.codehaus.stax2.XMLStreamWriter2
- Specified by:
setProperty
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
-
writeDTD
public void writeDTD(String rootName, String systemId, String publicId, String internalSubset) throws XMLStreamException
- Specified by:
writeDTD
in interfaceorg.codehaus.stax2.XMLStreamWriter2
- Specified by:
writeDTD
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
- Throws:
XMLStreamException
-
appendLeaf
protected void appendLeaf(Node n) throws IllegalStateException
- Specified by:
appendLeaf
in classorg.codehaus.stax2.ri.dom.DOMWrappingWriter
- Throws:
IllegalStateException
-
createStartElem
protected void createStartElem(String nsURI, String prefix, String localName, boolean isEmpty) throws XMLStreamException
Method called by all start element write methods.- Parameters:
nsURI
- Namespace URI to use: null and empty String denote 'no namespace'- Throws:
XMLStreamException
-
outputAttribute
protected void outputAttribute(String nsURI, String prefix, String localName, String value) throws XMLStreamException
- Throws:
XMLStreamException
-
findElemPrefix
protected final String findElemPrefix(String nsURI, DOMOutputElement elem) throws 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:
XMLStreamException
-
generateElemPrefix
protected final String generateElemPrefix(String suggPrefix, String nsURI, DOMOutputElement elem) throws 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:
XMLStreamException
-
findOrCreateAttrPrefix
protected final String findOrCreateAttrPrefix(String suggPrefix, String nsURI, DOMOutputElement elem) throws 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:
XMLStreamException
-
-