com.fasterxml.aalto.dom

## Class DOMWriterImpl

- java.lang.Object
- - org.codehaus.stax2.ri.dom.DOMWrappingWriter
  - - com.fasterxml.aalto.dom.DOMWriterImpl

- All Implemented Interfaces:
    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
  Author:
    Tatu Saloranta

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected 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 String` | `_suggestedDefNs`

    - ### Fields inherited from class org.codehaus.stax2.ri.dom.DOMWrappingWriter

      `mDocument, mEncoding, mNsAware, mNsContext, mNsRepairing, mValueEncoder`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `appendLeaf(Node n)`
    `static DOMWriterImpl` | `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 after `findElemPrefix(java.lang.String, com.fasterxml.aalto.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`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### _config

          protected final WriterConfig _config

    - #### _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 String _suggestedDefNs

    - #### _automaticNsPrefix

          protected String _automaticNsPrefix

  - ### Method Detail

    - #### createFrom

          public static DOMWriterImpl createFrom(WriterConfig cfg,
                                 DOMResult dst)
                                          throws XMLStreamException

      Throws:
        `XMLStreamException`

    - #### getNamespaceContext

          public NamespaceContext getNamespaceContext()

      Specified by:
        `getNamespaceContext` in interface `XMLStreamWriter`
      Specified by:
        `getNamespaceContext` in class `org.codehaus.stax2.ri.dom.DOMWrappingWriter`

    - #### getPrefix

          public String getPrefix(String uri)

      Specified by:
        `getPrefix` in interface `XMLStreamWriter`
      Specified by:
        `getPrefix` in class `org.codehaus.stax2.ri.dom.DOMWrappingWriter`

    - #### getProperty

          public Object getProperty(String name)

      Specified by:
        `getProperty` in interface `XMLStreamWriter`
      Specified by:
        `getProperty` in class `org.codehaus.stax2.ri.dom.DOMWrappingWriter`

    - #### setDefaultNamespace

          public void setDefaultNamespace(String uri)

      Specified by:
        `setDefaultNamespace` in interface `XMLStreamWriter`
      Specified by:
        `setDefaultNamespace` in class `org.codehaus.stax2.ri.dom.DOMWrappingWriter`

    - #### setPrefix

          public void setPrefix(String prefix,
                       String uri)
                         throws XMLStreamException

      Specified by:
        `setPrefix` in interface `XMLStreamWriter`
      Specified by:
        `setPrefix` in class `org.codehaus.stax2.ri.dom.DOMWrappingWriter`
      Throws:
        `XMLStreamException`

    - #### writeAttribute

          public void writeAttribute(String localName,
                            String value)
                              throws XMLStreamException

      Specified by:
        `writeAttribute` in interface `XMLStreamWriter`
      Specified by:
        `writeAttribute` in class `org.codehaus.stax2.ri.dom.DOMWrappingWriter`
      Throws:
        `XMLStreamException`

    - #### writeAttribute

          public void writeAttribute(String nsURI,
                            String localName,
                            String value)
                              throws XMLStreamException

      Specified by:
        `writeAttribute` in interface `XMLStreamWriter`
      Specified by:
        `writeAttribute` in class `org.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 interface `XMLStreamWriter`
      Specified by:
        `writeAttribute` in class `org.codehaus.stax2.ri.dom.DOMWrappingWriter`
      Throws:
        `XMLStreamException`

    - #### writeDefaultNamespace

          public void writeDefaultNamespace(String nsURI)

      Specified by:
        `writeDefaultNamespace` in interface `XMLStreamWriter`
      Specified by:
        `writeDefaultNamespace` in class `org.codehaus.stax2.ri.dom.DOMWrappingWriter`

    - #### writeEmptyElement

          public void writeEmptyElement(String localName)
                                 throws XMLStreamException

      Specified by:
        `writeEmptyElement` in interface `XMLStreamWriter`
      Specified by:
        `writeEmptyElement` in class `org.codehaus.stax2.ri.dom.DOMWrappingWriter`
      Throws:
        `XMLStreamException`

    - #### writeEmptyElement

          public void writeEmptyElement(String nsURI,
                               String localName)
                                 throws XMLStreamException

      Specified by:
        `writeEmptyElement` in interface `XMLStreamWriter`
      Specified by:
        `writeEmptyElement` in class `org.codehaus.stax2.ri.dom.DOMWrappingWriter`
      Throws:
        `XMLStreamException`

    - #### writeEmptyElement

          public void writeEmptyElement(String prefix,
                               String localName,
                               String nsURI)
                                 throws XMLStreamException

      Specified by:
        `writeEmptyElement` in interface `XMLStreamWriter`
      Specified by:
        `writeEmptyElement` in class `org.codehaus.stax2.ri.dom.DOMWrappingWriter`
      Throws:
        `XMLStreamException`

    - #### writeEndDocument

          public void writeEndDocument()

      Specified by:
        `writeEndDocument` in interface `XMLStreamWriter`
      Specified by:
        `writeEndDocument` in class `org.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 interface `org.codehaus.stax2.XMLStreamWriter2`
      Specified by:
        `isPropertySupported` in class `org.codehaus.stax2.ri.dom.DOMWrappingWriter`

    - #### setProperty

          public boolean setProperty(String name,
                            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(String rootName,
                      String systemId,
                      String publicId,
                      String internalSubset)
                        throws XMLStreamException

      Specified by:
        `writeDTD` in interface `org.codehaus.stax2.XMLStreamWriter2`
      Specified by:
        `writeDTD` in class `org.codehaus.stax2.ri.dom.DOMWrappingWriter`
      Throws:
        `XMLStreamException`

    - #### appendLeaf

          protected void appendLeaf(Node n)
                             throws IllegalStateException

      Specified by:
        `appendLeaf` in class `org.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 after `findElemPrefix(java.lang.String, com.fasterxml.aalto.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 prefix
        `elem` - Currently open start element, on which the attribute will be added.
      Throws:
        `XMLStreamException`

Copyright © 2018 FasterXML. All rights reserved.