Class ToXmlGenerator

  • All Implemented Interfaces:
    com.fasterxml.jackson.core.Versioned, Closeable, Flushable, AutoCloseable

    public final class ToXmlGenerator
    extends com.fasterxml.jackson.core.base.GeneratorBase
    JsonGenerator that outputs JAXB-style XML output instead of JSON content. Operation requires calling code (usually either standard Jackson serializers, or in some cases (like BeanSerializer) customised ones) to do additional configuration calls beyond regular JsonGenerator API, mostly to pass namespace information.
    • Field Detail

      • DEFAULT_UNKNOWN_ELEMENT

        protected static final String DEFAULT_UNKNOWN_ELEMENT
        If we support optional definition of element names, this is the element name to use...
        See Also:
        Constant Field Values
      • _xmlWriter

        protected final org.codehaus.stax2.XMLStreamWriter2 _xmlWriter
      • _stax2Emulation

        protected final boolean _stax2Emulation
        Marker flag set if the underlying stream writer has to emulate Stax2 API: this is problematic if trying to use writeRaw(java.lang.String) calls.
      • _ioContext

        protected final com.fasterxml.jackson.core.io.IOContext _ioContext
      • _formatFeatures

        protected int _formatFeatures
        Bit flag composed of bits that indicate which ToXmlGenerator.Features are enabled.
      • _xmlPrettyPrinter

        protected XmlPrettyPrinter _xmlPrettyPrinter
        We may need to use XML-specific indentation as well
      • _initialized

        protected boolean _initialized
        Marker set when initGenerator() has been called or not.
        Since:
        2.2
      • _nextName

        protected QName _nextName
        Element or attribute name to use for next output call. Assigned by either code that initiates serialization or bean serializer.
      • _nextIsAttribute

        protected boolean _nextIsAttribute
        Marker flag that indicates whether next name to write implies an attribute (true) or element (false)
      • _nextIsUnwrapped

        protected boolean _nextIsUnwrapped
        Marker flag used to indicate that the next write of a (property) value should be done without using surrounding start/end elements. Flag is to be cleared once unwrapping has been triggered once.
      • _nextIsCData

        protected boolean _nextIsCData
        Marker flag used to indicate that the next write of a (property) value should be as CData
      • _elementNameStack

        protected LinkedList<QName> _elementNameStack
        To support proper serialization of arrays it is necessary to keep stack of element names, so that we can "revert" to earlier
    • Constructor Detail

      • ToXmlGenerator

        public ToXmlGenerator​(com.fasterxml.jackson.core.io.IOContext ctxt,
                              int stdFeatures,
                              int xmlFeatures,
                              com.fasterxml.jackson.core.ObjectCodec codec,
                              XMLStreamWriter sw)
    • Method Detail

      • initGenerator

        public void initGenerator()
                           throws IOException
        Method called before writing any other output, to optionally output XML declaration.
        Throws:
        IOException
      • _constructDefaultPrettyPrinter

        protected com.fasterxml.jackson.core.PrettyPrinter _constructDefaultPrettyPrinter()
        Overrides:
        _constructDefaultPrettyPrinter in class com.fasterxml.jackson.core.base.GeneratorBase
      • setPrettyPrinter

        public com.fasterxml.jackson.core.JsonGenerator setPrettyPrinter​(com.fasterxml.jackson.core.PrettyPrinter pp)
        Overrides:
        setPrettyPrinter in class com.fasterxml.jackson.core.JsonGenerator
      • getOutputTarget

        public Object getOutputTarget()
        Overrides:
        getOutputTarget in class com.fasterxml.jackson.core.JsonGenerator
      • getOutputBuffered

        public int getOutputBuffered()
        Stax2 does not expose buffered content amount, so we can only return -1 from here
        Overrides:
        getOutputBuffered in class com.fasterxml.jackson.core.JsonGenerator
      • getFormatFeatures

        public int getFormatFeatures()
        Overrides:
        getFormatFeatures in class com.fasterxml.jackson.core.JsonGenerator
      • overrideFormatFeatures

        public com.fasterxml.jackson.core.JsonGenerator overrideFormatFeatures​(int values,
                                                                               int mask)
        Overrides:
        overrideFormatFeatures in class com.fasterxml.jackson.core.JsonGenerator
      • canWriteFormattedNumbers

        public boolean canWriteFormattedNumbers()
        Overrides:
        canWriteFormattedNumbers in class com.fasterxml.jackson.core.JsonGenerator
      • inRoot

        public boolean inRoot()
      • getStaxWriter

        public XMLStreamWriter getStaxWriter()
        Method that allows application direct access to underlying Stax XMLStreamWriter. Note that use of writer is discouraged, and may interfere with processing of this writer; however, occasionally it may be necessary.

        Note: writer instance will always be of type XMLStreamWriter2 (including Typed Access API) so upcasts are safe.

      • setNextIsAttribute

        public void setNextIsAttribute​(boolean isAttribute)
      • setNextIsUnwrapped

        public void setNextIsUnwrapped​(boolean isUnwrapped)
      • setNextIsCData

        public void setNextIsCData​(boolean isCData)
      • setNextName

        public final void setNextName​(QName name)
      • startWrappedValue

        public void startWrappedValue​(QName wrapperName,
                                      QName wrappedName)
                               throws IOException
        Methdod called when a structured (collection, array, map) is being output.
        Parameters:
        wrapperName - Element used as wrapper around elements, if any (null if none)
        wrappedName - Element used around individual content items (can not be null)
        Throws:
        IOException
      • finishWrappedValue

        public void finishWrappedValue​(QName wrapperName,
                                       QName wrappedName)
                                throws IOException
        Method called after a structured collection output has completed
        Throws:
        IOException
      • writeRepeatedFieldName

        public void writeRepeatedFieldName()
                                    throws IOException
        Trivial helper method called when to add a replicated wrapper name
        Throws:
        IOException
        Since:
        2.2
      • writeFieldName

        public final void writeFieldName​(String name)
                                  throws IOException
        Specified by:
        writeFieldName in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeStringField

        public final void writeStringField​(String fieldName,
                                           String value)
                                    throws IOException
        Overrides:
        writeStringField in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeStartArray

        public final void writeStartArray()
                                   throws IOException
        Specified by:
        writeStartArray in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeEndArray

        public final void writeEndArray()
                                 throws IOException
        Specified by:
        writeEndArray in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeStartObject

        public final void writeStartObject()
                                    throws IOException
        Specified by:
        writeStartObject in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeEndObject

        public final void writeEndObject()
                                  throws IOException
        Specified by:
        writeEndObject in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeFieldName

        public void writeFieldName​(com.fasterxml.jackson.core.SerializableString name)
                            throws IOException
        Overrides:
        writeFieldName in class com.fasterxml.jackson.core.base.GeneratorBase
        Throws:
        IOException
      • writeString

        public void writeString​(String text)
                         throws IOException
        Specified by:
        writeString in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeString

        public void writeString​(char[] text,
                                int offset,
                                int len)
                         throws IOException
        Specified by:
        writeString in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeString

        public void writeString​(com.fasterxml.jackson.core.SerializableString text)
                         throws IOException
        Overrides:
        writeString in class com.fasterxml.jackson.core.base.GeneratorBase
        Throws:
        IOException
      • writeRawUTF8String

        public void writeRawUTF8String​(byte[] text,
                                       int offset,
                                       int length)
                                throws IOException
        Specified by:
        writeRawUTF8String in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeUTF8String

        public void writeUTF8String​(byte[] text,
                                    int offset,
                                    int length)
                             throws IOException
        Specified by:
        writeUTF8String in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeRawValue

        public void writeRawValue​(String text)
                           throws IOException
        Overrides:
        writeRawValue in class com.fasterxml.jackson.core.base.GeneratorBase
        Throws:
        IOException
      • writeRawValue

        public void writeRawValue​(String text,
                                  int offset,
                                  int len)
                           throws IOException
        Overrides:
        writeRawValue in class com.fasterxml.jackson.core.base.GeneratorBase
        Throws:
        IOException
      • writeRawValue

        public void writeRawValue​(char[] text,
                                  int offset,
                                  int len)
                           throws IOException
        Overrides:
        writeRawValue in class com.fasterxml.jackson.core.base.GeneratorBase
        Throws:
        IOException
      • writeRawValue

        public void writeRawValue​(com.fasterxml.jackson.core.SerializableString text)
                           throws IOException
        Overrides:
        writeRawValue in class com.fasterxml.jackson.core.base.GeneratorBase
        Throws:
        IOException
      • writeRaw

        public void writeRaw​(String text)
                      throws IOException
        Specified by:
        writeRaw in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeRaw

        public void writeRaw​(String text,
                             int offset,
                             int len)
                      throws IOException
        Specified by:
        writeRaw in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeRaw

        public void writeRaw​(char[] text,
                             int offset,
                             int len)
                      throws IOException
        Specified by:
        writeRaw in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeRaw

        public void writeRaw​(char c)
                      throws IOException
        Specified by:
        writeRaw in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeBinary

        public void writeBinary​(com.fasterxml.jackson.core.Base64Variant b64variant,
                                byte[] data,
                                int offset,
                                int len)
                         throws IOException
        Specified by:
        writeBinary in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeBoolean

        public void writeBoolean​(boolean value)
                          throws IOException
        Specified by:
        writeBoolean in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeNull

        public void writeNull()
                       throws IOException
        Specified by:
        writeNull in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeNumber

        public void writeNumber​(int i)
                         throws IOException
        Specified by:
        writeNumber in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeNumber

        public void writeNumber​(long l)
                         throws IOException
        Specified by:
        writeNumber in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeNumber

        public void writeNumber​(double d)
                         throws IOException
        Specified by:
        writeNumber in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeNumber

        public void writeNumber​(float f)
                         throws IOException
        Specified by:
        writeNumber in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeNumber

        public void writeNumber​(BigDecimal dec)
                         throws IOException
        Specified by:
        writeNumber in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • writeNumber

        public void writeNumber​(BigInteger value)
                         throws IOException
        Specified by:
        writeNumber in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • _verifyValueWrite

        protected final void _verifyValueWrite​(String typeMsg)
                                        throws IOException
        Specified by:
        _verifyValueWrite in class com.fasterxml.jackson.core.base.GeneratorBase
        Throws:
        IOException
      • flush

        public void flush()
                   throws IOException
        Specified by:
        flush in interface Flushable
        Specified by:
        flush in class com.fasterxml.jackson.core.base.GeneratorBase
        Throws:
        IOException
      • _releaseBuffers

        protected void _releaseBuffers()
        Specified by:
        _releaseBuffers in class com.fasterxml.jackson.core.base.GeneratorBase
      • checkNextIsUnwrapped

        protected boolean checkNextIsUnwrapped()
        Method called to see if unwrapping is required; and if so, clear the flag (so further calls will return 'false' unless state is re-set)
      • handleMissingName

        protected void handleMissingName()
      • _reportUnimplementedStax2

        protected void _reportUnimplementedStax2​(String missingMethod)
                                          throws IOException
        Method called in case access to native Stax2 API implementation is required.
        Throws:
        IOException