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 enumEnumeration 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 intBit flag composed of bits that indicate whichToXmlGenerator.Features are enabled.protected booleanMarker set wheninitGenerator()has been called or not.protected XmlNameProcessorEscapes names with invalid XML charactersprotected XmlNameProcessor.XmlNameReusable internal value objectprotected booleanMarker flag that indicates whether next name to write implies an attribute (true) or element (false)protected booleanMarker flag used to indicate that the next write of a (property) value should be as CDataprotected booleanMarker flag used to indicate that the next write of a (property) value should be done without using surrounding start/end elements.protected QNameElement or attribute name to use for next output call.protected final XMLStreamWriterprotected final booleanMarker 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.StreamWriteConstraintsprotected XmlPrettyPrinterWe may need to use XML-specific indentation as wellprotected final org.codehaus.stax2.XMLStreamWriter2protected static final StringIf 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_STRINGFields 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.PrettyPrinterfinal voidfinal voidprotected voidprotected void_reportUnimplementedStax2(String missingMethod) Method called in case access to native Stax2 API implementation is required.protected final void_verifyValueWrite(String typeMsg) booleanprotected booleanMethod called to see if unwrapping is required; and if so, clear the flag (so further calls will return 'false' unless state is re-set)voidclose()configure(ToXmlGenerator.Feature f, boolean state) voidfinishWrappedValue(QName wrapperName, QName wrappedName) Method called after a structured collection output has completedvoidflush()intintStax2 does not expose buffered content amount, so we can only return-1from hereMethod that allows application direct access to underlying StaxXMLStreamWriter.com.fasterxml.jackson.core.util.JacksonFeatureSet<com.fasterxml.jackson.core.StreamWriteCapability> protected voidvoidMethod called before writing any other output, to optionally output XML declaration.booleaninRoot()final booleancom.fasterxml.jackson.core.JsonGeneratoroverrideFormatFeatures(int values, int mask) voidsetNextIsAttribute(boolean isAttribute) voidsetNextIsCData(boolean isCData) voidsetNextIsUnwrapped(boolean isUnwrapped) final voidsetNextName(QName name) final booleansetNextNameIfMissing(QName name) Method that does same assetNextName(javax.xml.namespace.QName), unless a name has already been set.com.fasterxml.jackson.core.JsonGeneratorsetPrettyPrinter(com.fasterxml.jackson.core.PrettyPrinter pp) voidstartWrappedValue(QName wrapperName, QName wrappedName) Methdod called when a structured (collection, array, map) is being output.com.fasterxml.jackson.core.StreamWriteConstraintsprivate byte[]toFullBuffer(byte[] data, int offset, int len) private byte[]toFullBuffer(InputStream data, int len) voidwriteBinary(com.fasterxml.jackson.core.Base64Variant b64variant, byte[] data, int offset, int len) intwriteBinary(com.fasterxml.jackson.core.Base64Variant b64variant, InputStream data, int dataLength) voidwriteBoolean(boolean value) final voidfinal voidvoidwriteFieldName(com.fasterxml.jackson.core.SerializableString name) final voidwriteFieldName(String name) voidvoidwriteNumber(double d) voidwriteNumber(float f) voidwriteNumber(int i) voidwriteNumber(long l) voidwriteNumber(String encodedValue) voidwriteNumber(BigDecimal dec) voidwriteNumber(BigInteger value) voidwriteRaw(char c) voidwriteRaw(char[] text, int offset, int len) voidvoidvoidwriteRawUTF8String(byte[] text, int offset, int length) voidwriteRawValue(char[] text, int offset, int len) voidwriteRawValue(com.fasterxml.jackson.core.SerializableString text) voidwriteRawValue(String text) voidwriteRawValue(String text, int offset, int len) voidTrivial helper method called when to add a replicated wrapper namefinal voidfinal voidprivate voidwriteStreamAsBinary(org.codehaus.stax2.typed.Base64Variant stax2base64v, InputStream data, int len) voidwriteString(char[] text, int offset, int len) voidwriteString(com.fasterxml.jackson.core.SerializableString text) voidwriteString(String text) final voidwriteStringField(String fieldName, String value) voidwriteUTF8String(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, writeTreeMethods 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.Features 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:
_constructDefaultPrettyPrinterin classcom.fasterxml.jackson.core.base.GeneratorBase
-
setPrettyPrinter
public com.fasterxml.jackson.core.JsonGenerator setPrettyPrinter(com.fasterxml.jackson.core.PrettyPrinter pp) - Overrides:
setPrettyPrinterin classcom.fasterxml.jackson.core.JsonGenerator
-
getOutputTarget
- Overrides:
getOutputTargetin classcom.fasterxml.jackson.core.JsonGenerator
-
getOutputBuffered
public int getOutputBuffered()Stax2 does not expose buffered content amount, so we can only return-1from here- Overrides:
getOutputBufferedin classcom.fasterxml.jackson.core.JsonGenerator
-
getFormatFeatures
public int getFormatFeatures()- Overrides:
getFormatFeaturesin classcom.fasterxml.jackson.core.JsonGenerator
-
overrideFormatFeatures
public com.fasterxml.jackson.core.JsonGenerator overrideFormatFeatures(int values, int mask) - Overrides:
overrideFormatFeaturesin classcom.fasterxml.jackson.core.JsonGenerator
-
streamWriteConstraints
public com.fasterxml.jackson.core.StreamWriteConstraints streamWriteConstraints()- Overrides:
streamWriteConstraintsin classcom.fasterxml.jackson.core.JsonGenerator
-
enable
-
disable
-
isEnabled
-
configure
-
canWriteFormattedNumbers
public boolean canWriteFormattedNumbers()- Overrides:
canWriteFormattedNumbersin classcom.fasterxml.jackson.core.JsonGenerator
-
getWriteCapabilities
public com.fasterxml.jackson.core.util.JacksonFeatureSet<com.fasterxml.jackson.core.StreamWriteCapability> getWriteCapabilities()- Overrides:
getWriteCapabilitiesin 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:
writeFieldNamein classcom.fasterxml.jackson.core.base.GeneratorBase- Throws:
IOException
-
writeFieldName
- Specified by:
writeFieldNamein classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeStringField
- Overrides:
writeStringFieldin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeStartArray
- Specified by:
writeStartArrayin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeEndArray
- Specified by:
writeEndArrayin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeStartObject
- Specified by:
writeStartObjectin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeEndObject
- Specified by:
writeEndObjectin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
_handleStartObject
- Throws:
IOException
-
_handleEndObject
- Throws:
IOException
-
writeString
- Specified by:
writeStringin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeString
- Specified by:
writeStringin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeString
- Overrides:
writeStringin classcom.fasterxml.jackson.core.base.GeneratorBase- Throws:
IOException
-
writeRawUTF8String
- Specified by:
writeRawUTF8Stringin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeUTF8String
- Specified by:
writeUTF8Stringin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeRawValue
- Overrides:
writeRawValuein classcom.fasterxml.jackson.core.base.GeneratorBase- Throws:
IOException
-
writeRawValue
- Overrides:
writeRawValuein classcom.fasterxml.jackson.core.base.GeneratorBase- Throws:
IOException
-
writeRawValue
- Overrides:
writeRawValuein classcom.fasterxml.jackson.core.base.GeneratorBase- Throws:
IOException
-
writeRawValue
- Overrides:
writeRawValuein classcom.fasterxml.jackson.core.base.GeneratorBase- Throws:
IOException
-
writeRaw
- Specified by:
writeRawin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeRaw
- Specified by:
writeRawin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeRaw
- Specified by:
writeRawin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeRaw
- Specified by:
writeRawin 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:
writeBinaryin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeBinary
public int writeBinary(com.fasterxml.jackson.core.Base64Variant b64variant, InputStream data, int dataLength) throws IOException - Overrides:
writeBinaryin 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:
IOExceptionXMLStreamException
-
toFullBuffer
private byte[] toFullBuffer(byte[] data, int offset, int len) -
toFullBuffer
- Throws:
IOException
-
writeBoolean
- Specified by:
writeBooleanin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeNull
- Specified by:
writeNullin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeNumber
- Specified by:
writeNumberin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeNumber
- Specified by:
writeNumberin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeNumber
- Specified by:
writeNumberin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeNumber
- Specified by:
writeNumberin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeNumber
- Specified by:
writeNumberin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeNumber
- Specified by:
writeNumberin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOException
-
writeNumber
- Specified by:
writeNumberin classcom.fasterxml.jackson.core.JsonGenerator- Throws:
IOExceptionUnsupportedOperationException
-
_verifyValueWrite
- Specified by:
_verifyValueWritein classcom.fasterxml.jackson.core.base.GeneratorBase- Throws:
IOException
-
flush
- Specified by:
flushin interfaceFlushable- Specified by:
flushin classcom.fasterxml.jackson.core.base.GeneratorBase- Throws:
IOException
-
close
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classcom.fasterxml.jackson.core.base.GeneratorBase- Throws:
IOException
-
_releaseBuffers
protected void _releaseBuffers()- Specified by:
_releaseBuffersin 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
-