Class DOMWriterImpl

  • All Implemented Interfaces:
    javax.xml.stream.XMLStreamWriter, org.codehaus.stax2.typed.TypedXMLStreamWriter, org.codehaus.stax2.validation.Validatable, org.codehaus.stax2.XMLStreamWriter2

    public final class DOMWriterImpl
    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:

    • Namespace-repairing mode not implemented
    • Validation functionality not implemented
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.lang.String _automaticNsPrefix  
      protected int[] _autoNsSeq
      for NsRepairing mode
      protected WriterConfig _config  
      protected DOMOutputElement _currElem
      This element is the current context element, under which all other nodes are added, until matching end element is output.
      protected DOMOutputElement _openElement
      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 _suggestedDefNs  
      (package private) java.util.HashMap<java.lang.String,​java.lang.String> _suggestedPrefixes
      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
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private DOMWriterImpl​(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 DOMWriterImpl 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.fasterxml.aalto.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

      • _currElem

        protected DOMOutputElement _currElem
        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.

      • _openElement

        protected DOMOutputElement _openElement
        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 _currElem, 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.

      • _autoNsSeq

        protected int[] _autoNsSeq
        for NsRepairing mode
      • _suggestedDefNs

        protected java.lang.String _suggestedDefNs
      • _automaticNsPrefix

        protected java.lang.String _automaticNsPrefix
      • _suggestedPrefixes

        java.util.HashMap<java.lang.String,​java.lang.String> _suggestedPrefixes
        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

      • DOMWriterImpl

        private DOMWriterImpl​(WriterConfig cfg,
                              org.w3c.dom.Node treeRoot)
                       throws javax.xml.stream.XMLStreamException
        Throws:
        javax.xml.stream.XMLStreamException
    • Method Detail

      • createFrom

        public static DOMWriterImpl 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