Class 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 using XMLStreamWriter 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 mode
      protected 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 either writeStartElement and writeEmptyElement, 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.
      • Fields inherited from class org.codehaus.stax2.ri.dom.DOMWrappingWriter

        mDocument, mEncoding, mNsAware, mNsContext, mNsRepairing, mValueEncoder
    • 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 after findElemPrefix(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
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • ERR_NSDECL_WRONG_STATE

        protected static final java.lang.String ERR_NSDECL_WRONG_STATE
        See Also:
        Constant Field Values
      • 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 either writeStartElement and writeEmptyElement, 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 using writeEmptyElement) 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 to setPrefix(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 interface javax.xml.stream.XMLStreamWriter
        Specified by:
        getNamespaceContext in class org.codehaus.stax2.ri.dom.DOMWrappingWriter
      • getPrefix

        public java.lang.String getPrefix​(java.lang.String uri)
        Specified by:
        getPrefix in interface javax.xml.stream.XMLStreamWriter
        Specified by:
        getPrefix in class org.codehaus.stax2.ri.dom.DOMWrappingWriter
      • getProperty

        public java.lang.Object getProperty​(java.lang.String name)
        Specified by:
        getProperty in interface javax.xml.stream.XMLStreamWriter
        Specified by:
        getProperty in class org.codehaus.stax2.ri.dom.DOMWrappingWriter
      • setDefaultNamespace

        public void setDefaultNamespace​(java.lang.String uri)
        Specified by:
        setDefaultNamespace in interface javax.xml.stream.XMLStreamWriter
        Specified by:
        setDefaultNamespace in class org.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 interface javax.xml.stream.XMLStreamWriter
        Specified by:
        setPrefix in class org.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 interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeAttribute in class org.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 interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeAttribute in class org.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 interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeAttribute in class org.codehaus.stax2.ri.dom.DOMWrappingWriter
        Throws:
        javax.xml.stream.XMLStreamException
      • writeDefaultNamespace

        public void writeDefaultNamespace​(java.lang.String nsURI)
        Specified by:
        writeDefaultNamespace in interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeDefaultNamespace in class org.codehaus.stax2.ri.dom.DOMWrappingWriter
      • writeEmptyElement

        public void writeEmptyElement​(java.lang.String localName)
                               throws javax.xml.stream.XMLStreamException
        Specified by:
        writeEmptyElement in interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeEmptyElement in class org.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 interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeEmptyElement in class org.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 interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeEmptyElement in class org.codehaus.stax2.ri.dom.DOMWrappingWriter
        Throws:
        javax.xml.stream.XMLStreamException
      • writeEndDocument

        public void writeEndDocument()
        Specified by:
        writeEndDocument in interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeEndDocument in class org.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 interface org.codehaus.stax2.XMLStreamWriter2
        Specified by:
        isPropertySupported in class org.codehaus.stax2.ri.dom.DOMWrappingWriter
      • setProperty

        public boolean setProperty​(java.lang.String name,
                                   java.lang.Object value)
        Specified by:
        setProperty in interface org.codehaus.stax2.XMLStreamWriter2
        Specified by:
        setProperty in class org.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 interface org.codehaus.stax2.XMLStreamWriter2
        Specified by:
        writeDTD in class org.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 class org.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
      • 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 prefix
        elem - Currently open start element, on which the attribute will be added.
        Throws:
        javax.xml.stream.XMLStreamException