Class ToXmlGenerator
java.lang.Object
com.fasterxml.jackson.core.JsonGenerator
com.fasterxml.jackson.core.base.GeneratorBase
com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator
- All Implemented Interfaces:
com.fasterxml.jackson.core.Versioned
,Closeable
,Flushable
,AutoCloseable
public 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
) customized ones) to do
additional configuration calls beyond regular JsonGenerator
API,
mostly to pass namespace information.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enum
Enumeration that defines all togglable extra XML-specific features -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected LinkedList
<QName> To support proper serialization of arrays it is necessary to keep stack of element names, so that we can "revert" to earlierprotected int
Bit flag composed of bits that indicate whichToXmlGenerator.Feature
s are enabled.protected boolean
Marker set wheninitGenerator()
has been called or not.protected XmlNameProcessor
Escapes names with invalid XML charactersprotected XmlNameProcessor.XmlName
Reusable internal value objectprotected boolean
Marker flag that indicates whether next name to write implies an attribute (true) or element (false)protected boolean
Marker flag used to indicate that the next write of a (property) value should be as CDataprotected boolean
Marker flag used to indicate that the next write of a (property) value should be done without using surrounding start/end elements.protected QName
Element or attribute name to use for next output call.protected final XMLStreamWriter
protected final boolean
Marker flag set if the underlying stream writer has to emulate Stax2 API: this is problematic if trying to usewriteRaw(java.lang.String)
calls.protected final com.fasterxml.jackson.core.StreamWriteConstraints
protected XmlPrettyPrinter
We may need to use XML-specific indentation as wellprotected final org.codehaus.stax2.XMLStreamWriter2
protected static final String
If we support optional definition of element names, this is the element name to use...Fields inherited from class com.fasterxml.jackson.core.base.GeneratorBase
_cfgNumbersAsStrings, _closed, _features, _ioContext, _objectCodec, _writeContext, DERIVED_FEATURES_MASK, MAX_BIG_DECIMAL_SCALE, SURR1_FIRST, SURR1_LAST, SURR2_FIRST, SURR2_LAST, WRITE_BINARY, WRITE_BOOLEAN, WRITE_NULL, WRITE_NUMBER, WRITE_RAW, WRITE_STRING
Fields inherited from class com.fasterxml.jackson.core.JsonGenerator
_cfgPrettyPrinter, DEFAULT_BINARY_WRITE_CAPABILITIES, DEFAULT_TEXTUAL_WRITE_CAPABILITIES, DEFAULT_WRITE_CAPABILITIES
-
Constructor Summary
ConstructorsConstructorDescriptionToXmlGenerator
(com.fasterxml.jackson.core.io.IOContext ctxt, int stdFeatures, int xmlFeatures, com.fasterxml.jackson.core.ObjectCodec codec, XMLStreamWriter sw, XmlNameProcessor nameProcessor) -
Method Summary
Modifier and TypeMethodDescriptionprotected com.fasterxml.jackson.core.PrettyPrinter
final void
final void
protected void
protected void
_reportUnimplementedStax2
(String missingMethod) Method called in case access to native Stax2 API implementation is required.protected final void
_verifyValueWrite
(String typeMsg) boolean
protected boolean
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)void
close()
configure
(ToXmlGenerator.Feature f, boolean state) void
finishWrappedValue
(QName wrapperName, QName wrappedName) Method called after a structured collection output has completedvoid
flush()
int
int
Stax2 does not expose buffered content amount, so we can only return-1
from hereMethod that allows application direct access to underlying StaxXMLStreamWriter
.com.fasterxml.jackson.core.util.JacksonFeatureSet
<com.fasterxml.jackson.core.StreamWriteCapability> protected void
void
Method called before writing any other output, to optionally output XML declaration.boolean
inRoot()
final boolean
com.fasterxml.jackson.core.JsonGenerator
overrideFormatFeatures
(int values, int mask) void
setNextIsAttribute
(boolean isAttribute) void
setNextIsCData
(boolean isCData) void
setNextIsUnwrapped
(boolean isUnwrapped) final void
setNextName
(QName name) final boolean
setNextNameIfMissing
(QName name) Method that does same assetNextName(javax.xml.namespace.QName)
, unless a name has already been set.com.fasterxml.jackson.core.JsonGenerator
setPrettyPrinter
(com.fasterxml.jackson.core.PrettyPrinter pp) void
startWrappedValue
(QName wrapperName, QName wrappedName) Methdod called when a structured (collection, array, map) is being output.com.fasterxml.jackson.core.StreamWriteConstraints
private byte[]
toFullBuffer
(byte[] data, int offset, int len) private byte[]
toFullBuffer
(InputStream data, int len) void
writeBinary
(com.fasterxml.jackson.core.Base64Variant b64variant, byte[] data, int offset, int len) int
writeBinary
(com.fasterxml.jackson.core.Base64Variant b64variant, InputStream data, int dataLength) void
writeBoolean
(boolean value) final void
final void
void
writeFieldName
(com.fasterxml.jackson.core.SerializableString name) final void
writeFieldName
(String name) void
void
writeNumber
(double d) void
writeNumber
(float f) void
writeNumber
(int i) void
writeNumber
(long l) void
writeNumber
(String encodedValue) void
writeNumber
(BigDecimal dec) void
writeNumber
(BigInteger value) void
writeRaw
(char c) void
writeRaw
(char[] text, int offset, int len) void
void
void
writeRawUTF8String
(byte[] text, int offset, int length) void
writeRawValue
(char[] text, int offset, int len) void
writeRawValue
(com.fasterxml.jackson.core.SerializableString text) void
writeRawValue
(String text) void
writeRawValue
(String text, int offset, int len) void
Trivial helper method called when to add a replicated wrapper namefinal void
final void
private void
writeStreamAsBinary
(org.codehaus.stax2.typed.Base64Variant stax2base64v, InputStream data, int len) void
writeString
(char[] text, int offset, int len) void
writeString
(com.fasterxml.jackson.core.SerializableString text) void
writeString
(String text) final void
writeStringField
(String fieldName, String value) void
writeUTF8String
(byte[] text, int offset, int length) Methods inherited from class com.fasterxml.jackson.core.base.GeneratorBase
_asString, _checkRangeBoundsForByteArray, _checkRangeBoundsForCharArray, _checkRangeBoundsForString, _checkStdFeatureChanges, _decodeSurrogate, assignCurrentValue, currentValue, disable, enable, getCodec, getFeatureMask, getOutputContext, ioContext, isClosed, isEnabled, overrideStdFeatures, setCodec, setFeatureMask, useDefaultPrettyPrinter, version, writeObject, writeStartObject, writeTree
Methods inherited from class com.fasterxml.jackson.core.JsonGenerator
_constructWriteException, _constructWriteException, _constructWriteException, _constructWriteException, _copyCurrentContents, _copyCurrentFloatValue, _copyCurrentFloatValueExact, _copyCurrentIntValue, _copyCurrentStringValue, _reportError, _reportUnsupportedOperation, _reportUnsupportedOperation, _throwInternal, _verifyOffsets, _writeSimpleObject, canOmitFields, canUseSchema, canWriteBinaryNatively, canWriteObjectId, canWriteTypeId, configure, copyCurrentEvent, copyCurrentEventExact, copyCurrentStructure, getCharacterEscapes, getCurrentValue, getHighestEscapedChar, getPrettyPrinter, getSchema, isEnabled, setCharacterEscapes, setCurrentValue, setHighestNonEscapedChar, setRootValueSeparator, setSchema, writeArray, writeArray, writeArray, writeArray, writeArrayFieldStart, writeBinary, writeBinary, writeBinary, writeBinaryField, writeBooleanField, writeEmbeddedObject, writeFieldId, writeNullField, writeNumber, writeNumber, writeNumberField, writeNumberField, writeNumberField, writeNumberField, writeNumberField, writeNumberField, writeNumberField, writeObjectField, writeObjectFieldStart, writeObjectId, writeObjectRef, writeOmittedField, writePOJO, writePOJOField, writeRaw, writeStartArray, writeStartArray, writeStartArray, writeStartObject, writeString, writeTypeId, writeTypePrefix, writeTypeSuffix
-
Field Details
-
DEFAULT_UNKNOWN_ELEMENT
If we support optional definition of element names, this is the element name to use...- See Also:
-
_xmlWriter
protected final org.codehaus.stax2.XMLStreamWriter2 _xmlWriter -
_originalXmlWriter
-
_stax2Emulation
protected final boolean _stax2EmulationMarker flag set if the underlying stream writer has to emulate Stax2 API: this is problematic if trying to usewriteRaw(java.lang.String)
calls. -
_streamWriteConstraints
protected final com.fasterxml.jackson.core.StreamWriteConstraints _streamWriteConstraints- Since:
- 2.16
-
_formatFeatures
protected int _formatFeaturesBit flag composed of bits that indicate whichToXmlGenerator.Feature
s are enabled. -
_xmlPrettyPrinter
We may need to use XML-specific indentation as well -
_nameProcessor
Escapes names with invalid XML characters- Since:
- 2.14
-
_initialized
protected boolean _initializedMarker set wheninitGenerator()
has been called or not.- Since:
- 2.2
-
_nextName
Element or attribute name to use for next output call. Assigned by either code that initiates serialization or bean serializer. -
_nextIsAttribute
protected boolean _nextIsAttributeMarker flag that indicates whether next name to write implies an attribute (true) or element (false) -
_nextIsUnwrapped
protected boolean _nextIsUnwrappedMarker 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 _nextIsCDataMarker flag used to indicate that the next write of a (property) value should be as CData -
_elementNameStack
To support proper serialization of arrays it is necessary to keep stack of element names, so that we can "revert" to earlier -
_nameToEncode
Reusable internal value object- Since:
- 2.14
-
-
Constructor Details
-
ToXmlGenerator
public ToXmlGenerator(com.fasterxml.jackson.core.io.IOContext ctxt, int stdFeatures, int xmlFeatures, com.fasterxml.jackson.core.ObjectCodec codec, XMLStreamWriter sw, XmlNameProcessor nameProcessor)
-
-
Method Details
-
initGenerator
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 classcom.fasterxml.jackson.core.base.GeneratorBase
-
setPrettyPrinter
public com.fasterxml.jackson.core.JsonGenerator setPrettyPrinter(com.fasterxml.jackson.core.PrettyPrinter pp) - Overrides:
setPrettyPrinter
in classcom.fasterxml.jackson.core.JsonGenerator
-
getOutputTarget
- Overrides:
getOutputTarget
in classcom.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 classcom.fasterxml.jackson.core.JsonGenerator
-
getFormatFeatures
public int getFormatFeatures()- Overrides:
getFormatFeatures
in classcom.fasterxml.jackson.core.JsonGenerator
-
overrideFormatFeatures
public com.fasterxml.jackson.core.JsonGenerator overrideFormatFeatures(int values, int mask) - Overrides:
overrideFormatFeatures
in classcom.fasterxml.jackson.core.JsonGenerator
-
streamWriteConstraints
public com.fasterxml.jackson.core.StreamWriteConstraints streamWriteConstraints()- Overrides:
streamWriteConstraints
in classcom.fasterxml.jackson.core.JsonGenerator
-
enable
-
disable
-
isEnabled
-
configure
-
canWriteFormattedNumbers
public boolean canWriteFormattedNumbers()- Overrides:
canWriteFormattedNumbers
in classcom.fasterxml.jackson.core.JsonGenerator
-
getWriteCapabilities
public com.fasterxml.jackson.core.util.JacksonFeatureSet<com.fasterxml.jackson.core.StreamWriteCapability> getWriteCapabilities()- Overrides:
getWriteCapabilities
in classcom.fasterxml.jackson.core.JsonGenerator
-
inRoot
public boolean inRoot() -
getStaxWriter
Method that allows application direct access to underlying StaxXMLStreamWriter
. 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
-
setNextNameIfMissing
Method that does same assetNextName(javax.xml.namespace.QName)
, unless a name has already been set.- Since:
- 2.1.2
-
startWrappedValue
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
Method called after a structured collection output has completed- Throws:
IOException
-
writeRepeatedFieldName
Trivial helper method called when to add a replicated wrapper name- Throws:
IOException
- Since:
- 2.2
-
writeFieldName
- Overrides:
writeFieldName
in classcom.fasterxml.jackson.core.base.GeneratorBase
- Throws:
IOException
-
writeFieldName
- Specified by:
writeFieldName
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeStringField
- Overrides:
writeStringField
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeStartArray
- Specified by:
writeStartArray
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeEndArray
- Specified by:
writeEndArray
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeStartObject
- Specified by:
writeStartObject
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeEndObject
- Specified by:
writeEndObject
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
_handleStartObject
- Throws:
IOException
-
_handleEndObject
- Throws:
IOException
-
writeString
- Specified by:
writeString
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeString
- Specified by:
writeString
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeString
- Overrides:
writeString
in classcom.fasterxml.jackson.core.base.GeneratorBase
- Throws:
IOException
-
writeRawUTF8String
- Specified by:
writeRawUTF8String
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeUTF8String
- Specified by:
writeUTF8String
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeRawValue
- Overrides:
writeRawValue
in classcom.fasterxml.jackson.core.base.GeneratorBase
- Throws:
IOException
-
writeRawValue
- Overrides:
writeRawValue
in classcom.fasterxml.jackson.core.base.GeneratorBase
- Throws:
IOException
-
writeRawValue
- Overrides:
writeRawValue
in classcom.fasterxml.jackson.core.base.GeneratorBase
- Throws:
IOException
-
writeRawValue
- Overrides:
writeRawValue
in classcom.fasterxml.jackson.core.base.GeneratorBase
- Throws:
IOException
-
writeRaw
- Specified by:
writeRaw
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeRaw
- Specified by:
writeRaw
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeRaw
- Specified by:
writeRaw
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeRaw
- Specified by:
writeRaw
in classcom.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 classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeBinary
public int writeBinary(com.fasterxml.jackson.core.Base64Variant b64variant, InputStream data, int dataLength) throws IOException - Overrides:
writeBinary
in classcom.fasterxml.jackson.core.base.GeneratorBase
- Throws:
IOException
-
writeStreamAsBinary
private void writeStreamAsBinary(org.codehaus.stax2.typed.Base64Variant stax2base64v, InputStream data, int len) throws IOException, XMLStreamException - Throws:
IOException
XMLStreamException
-
toFullBuffer
private byte[] toFullBuffer(byte[] data, int offset, int len) -
toFullBuffer
- Throws:
IOException
-
writeBoolean
- Specified by:
writeBoolean
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeNull
- Specified by:
writeNull
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeNumber
- Specified by:
writeNumber
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeNumber
- Specified by:
writeNumber
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeNumber
- Specified by:
writeNumber
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeNumber
- Specified by:
writeNumber
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeNumber
- Specified by:
writeNumber
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeNumber
- Specified by:
writeNumber
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
-
writeNumber
- Specified by:
writeNumber
in classcom.fasterxml.jackson.core.JsonGenerator
- Throws:
IOException
UnsupportedOperationException
-
_verifyValueWrite
- Specified by:
_verifyValueWrite
in classcom.fasterxml.jackson.core.base.GeneratorBase
- Throws:
IOException
-
flush
- Specified by:
flush
in interfaceFlushable
- Specified by:
flush
in classcom.fasterxml.jackson.core.base.GeneratorBase
- Throws:
IOException
-
close
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classcom.fasterxml.jackson.core.base.GeneratorBase
- Throws:
IOException
-
_releaseBuffers
protected void _releaseBuffers()- Specified by:
_releaseBuffers
in classcom.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
Method called in case access to native Stax2 API implementation is required.- Throws:
IOException
-