Top Description Inners Fields Constructors Methods
com.fasterxml.jackson.dataformat.xml.ser

public Class ToXmlGenerator

extends GeneratorBase
Class Inheritance
Imports
java.io.*, java.math.BigDecimal, .BigInteger, java.util.*, javax.xml.XMLConstants, javax.xml.namespace.QName, javax.xml.stream.XMLStreamException, .XMLStreamWriter, com.fasterxml.jackson.dataformat.xml.XmlNameProcessor, .XmlPrettyPrinter, org.codehaus.stax2.XMLStreamWriter2, org.codehaus.stax2.ri.Stax2WriterAdapter, com.fasterxml.jackson.core.*, com.fasterxml.jackson.core.base.GeneratorBase, com.fasterxml.jackson.core.io.IOContext, com.fasterxml.jackson.core.json.JsonWriteContext, com.fasterxml.jackson.core.util.JacksonFeatureSet, com.fasterxml.jackson.dataformat.xml.util.DefaultXmlPrettyPrinter, .StaxUtil

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 and Inner Type Summary

Modifier and TypeClass and Description
public static enum
ToXmlGenerator.Feature

Enumeration that defines all togglable extra XML-specific features

Field Summary

Modifier and TypeField and Description
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

protected int
_formatFeatures

Bit flag composed of bits that indicate which ToXmlGenerator.Features are enabled.

protected boolean
_initialized

Marker set when initGenerator() has been called or not.

protected XmlNameProcessor
_nameProcessor

Escapes names with invalid XML characters

protected XmlNameProcessor.XmlName
_nameToEncode

Reusable internal value object

protected boolean
_nextIsAttribute

Marker flag that indicates whether next name to write implies an attribute (true) or element (false)

protected boolean
_nextIsCData

Marker flag used to indicate that the next write of a (property) value should be as CData

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.

protected QName
_nextName

Element or attribute name to use for next output call.

protected final XMLStreamWriter
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 calls.

protected final StreamWriteConstraints
protected XmlPrettyPrinter
_xmlPrettyPrinter

We may need to use XML-specific indentation as well

protected final XMLStreamWriter2
protected static final String
DEFAULT_UNKNOWN_ELEMENT

If we support optional definition of element names, this is the element name to use...

Inherited from com.fasterxml.jackson.core.base.GeneratorBase:
_cfgNumbersAsStrings_closed_features_ioContext_objectCodec_writeContextDERIVED_FEATURES_MASKMAX_BIG_DECIMAL_SCALESURR1_FIRSTSURR1_LASTSURR2_FIRSTSURR2_LASTWRITE_BINARYWRITE_BOOLEANWRITE_NULLWRITE_NUMBERWRITE_RAWWRITE_STRING

Constructor Summary

AccessConstructor and Description
public
ToXmlGenerator(IOContext ctxt, int stdFeatures, int xmlFeatures, ObjectCodec codec, XMLStreamWriter sw, XmlNameProcessor nameProcessor)

Method Summary

Modifier and TypeMethod and Description
protected PrettyPrinter
_constructDefaultPrettyPrinter()

Overrides com.fasterxml.jackson.core.base.GeneratorBase._constructDefaultPrettyPrinter.

Overridable factory method called to instantiate an appropriate PrettyPrinter for case of "just use the default one", when useDefaultPrettyPrinter() is called.
public final void
public final void
protected void
_releaseBuffers()

Implements abstract com.fasterxml.jackson.core.base.GeneratorBase._releaseBuffers.

Method called to release any buffers generator may be holding, once generator is being closed.
protected void
_reportUnimplementedStax2(String missingMethod)

Method called in case access to native Stax2 API implementation is required.

protected final void
_verifyValueWrite(String
Additional message used for generating exception message if value output is NOT legal in current generator output state.
typeMsg
)

Implements abstract com.fasterxml.jackson.core.base.GeneratorBase._verifyValueWrite.

Method called before trying to write a value (scalar or structured), to verify that this is legal in current output state, as well as to output separators if and as necessary.
public boolean
canWriteFormattedNumbers()

Overrides com.fasterxml.jackson.core.JsonGenerator.canWriteFormattedNumbers.

Introspection method to call to check whether it is possible to write numbers using writeNumber(java.lang.String) using possible custom format, or not.
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)

public void
close()

Overrides com.fasterxml.jackson.core.base.GeneratorBase.close.

Implements java.io.Closeable.close.

Method called to close this generator, so that no more content can be written.
public ToXmlGenerator
configure(ToXmlGenerator.Feature f, boolean state)

public ToXmlGenerator
public ToXmlGenerator
public void
finishWrappedValue(QName wrapperName, QName wrappedName)

Method called after a structured collection output has completed

public void
flush()

Implements abstract com.fasterxml.jackson.core.base.GeneratorBase.flush.

Implements java.io.Flushable.flush.

Method called to flush any buffered content to the underlying target (output stream, writer), and to flush the target itself as well.
public int
getFormatFeatures()

Overrides com.fasterxml.jackson.core.JsonGenerator.getFormatFeatures.

Bulk access method for getting state of all FormatFeatures, format-specific on/off configuration settings.
public int
getOutputBuffered()

Overrides com.fasterxml.jackson.core.JsonGenerator.getOutputBuffered.

Stax2 does not expose buffered content amount, so we can only return -1 from here
public Object
getOutputTarget()

Overrides com.fasterxml.jackson.core.JsonGenerator.getOutputTarget.

Method that can be used to get access to object that is used as target for generated output; this is usually either OutputStream or Writer, depending on what generator was constructed with.
public XMLStreamWriter
getStaxWriter()

Method that allows application direct access to underlying Stax XMLStreamWriter.

public JacksonFeatureSet<StreamWriteCapability>
getWriteCapabilities()

Overrides com.fasterxml.jackson.core.JsonGenerator.getWriteCapabilities.

Accessor for getting metadata on capabilities of this generator, based on underlying data format being read (directly or indirectly).
protected void
public void
initGenerator()

Method called before writing any other output, to optionally output XML declaration.

public boolean
public final boolean
public JsonGenerator
overrideFormatFeatures(int
Bit mask of set/clear state for features to change
values
,
int
Bit mask of features to change
mask
)

Overrides com.fasterxml.jackson.core.JsonGenerator.overrideFormatFeatures.

Bulk set method for (re)setting states of FormatFeatures, by specifying values (set / clear) along with a mask, to determine which features to change, if any.
public void
setNextIsAttribute(boolean isAttribute)

public void
setNextIsCData(boolean isCData)

public void
setNextIsUnwrapped(boolean isUnwrapped)

public final void
public final boolean
setNextNameIfMissing(QName name)

Method that does same as setNextName, unless a name has already been set.

public JsonGenerator
setPrettyPrinter(PrettyPrinter
PrettyPrinter to assign, if any; null if none
pp
)

Overrides com.fasterxml.jackson.core.JsonGenerator.setPrettyPrinter.

Method for setting a custom pretty printer, which is usually used to add indentation for improved human readability.
public void
startWrappedValue(QName
Element used as wrapper around elements, if any (null if none)
wrapperName
,
QName
Element used around individual content items (can not be null)
wrappedName
)

Methdod called when a structured (collection, array, map) is being output.

public StreamWriteConstraints
streamWriteConstraints()

Overrides com.fasterxml.jackson.core.JsonGenerator.streamWriteConstraints.

Get the constraints to apply when performing streaming writes.
private byte[]
toFullBuffer(byte[] data, int offset, int len)

private byte[]
toFullBuffer(InputStream data, final int len)

public void
writeBinary(Base64Variant
Base64 variant to use: defines details such as whether padding is used (and if so, using which character); what is the maximum line length before adding linefeed, and also the underlying alphabet to use.
b64variant
,
byte[]
Buffer that contains binary data to write
data
,
int
Offset in data of the first byte of data to write
offset
,
int
Length of data to write
len
)

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeBinary.

Method that will output given chunk of binary data as base64 encoded, as a complete String value (surrounded by double quotes).
public int
writeBinary(Base64Variant
Base64 variant to use
b64variant
,
InputStream
InputStream to use for reading binary data to write. Will not be closed after successful write operation
data
,
int
(optional) number of bytes that will be available; or -1 to be indicate it is not known. If a positive length is given, data MUST provide at least that many bytes: if not, an exception will be thrown. Note that implementations need not support cases where length is not known in advance; this depends on underlying data format: JSON output does NOT require length, other formats may.
dataLength
)

Overrides com.fasterxml.jackson.core.base.GeneratorBase.writeBinary.

Method similar to writeBinary(Base64Variant, byte[], int, int), but where input is provided through a stream, allowing for incremental writes without holding the whole input in memory.
public void
writeBoolean(boolean
Boolean value to write
value
)

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeBoolean.

Method for outputting literal JSON boolean value (one of Strings 'true' and 'false').
public final void
writeEndArray()

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeEndArray.

Method for writing closing marker of a JSON Array value (character ']'; plus possible white space decoration if pretty-printing is enabled).
public final void
writeEndObject()

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeEndObject.

Method for writing closing marker of an Object value (character '}'; plus possible white space decoration if pretty-printing is enabled).
public final void
writeFieldName(String
Field name to write
name
)

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeFieldName.

Method for writing a field name (JSON String surrounded by double quotes: syntactically identical to a JSON String value), possibly decorated by white space if pretty-printing is enabled.
public void
writeFieldName(SerializableString
Field name to write
name
)

Overrides com.fasterxml.jackson.core.base.GeneratorBase.writeFieldName.

Method similar to writeFieldName(String), main difference being that it may perform better as some of processing (such as quoting of certain characters, or encoding into external encoding if supported by generator) can be done just once and reused for later calls.
public void
writeNull()

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeNull.

Method for outputting literal JSON null value.
public void
writeNumber(int
Number value to write
i
)

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeNumber.

Method for outputting given value as JSON number.
public void
writeNumber(long
Number value to write
l
)

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeNumber.

Method for outputting given value as JSON number.
public void
writeNumber(double
Number value to write
d
)

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeNumber.

Method for outputting indicate JSON numeric value.
public void
writeNumber(float
Number value to write
f
)

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeNumber.

Method for outputting indicate JSON numeric value.
public void
writeNumber(BigDecimal
Number value to write
dec
)

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeNumber.

Method for outputting indicate JSON numeric value.
public void
writeNumber(BigInteger
Number value to write
value
)

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeNumber.

Method for outputting given value as JSON number.
public void
writeNumber(String
Textual (possibly format) number representation to write
encodedValue
)

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeNumber.

Write method that can be used for custom numeric types that can not be (easily?) converted to "standard" Java number types.
public void
writeRaw(String
Textual contents to include as-is in output.
text
)

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeRaw.

Method that will force generator to copy input text verbatim with no modifications (including that no escaping is done and no separators are added even if context [array, object] would otherwise require such).
public void
writeRaw(String
String that has contents to include as-is in output
text
,
int
Offset within text of the first character to output
offset
,
int
Length of content (from text, starting at offset offset) to output
len
)

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeRaw.

Method that will force generator to copy input text verbatim with no modifications (including that no escaping is done and no separators are added even if context [array, object] would otherwise require such).
public void
writeRaw(char[]
Buffer that has contents to include as-is in output
text
,
int
Offset within text of the first character to output
offset
,
int
Length of content (from text, starting at offset offset) to output
len
)

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeRaw.

Method that will force generator to copy input text verbatim with no modifications (including that no escaping is done and no separators are added even if context [array, object] would otherwise require such).
public void
writeRaw(char
Character to included in output
c
)

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeRaw.

Method that will force generator to copy input text verbatim with no modifications (including that no escaping is done and no separators are added even if context [array, object] would otherwise require such).
public void
writeRawUTF8String(byte[]
Buffer that contains String value to write
text
,
int
Offset in buffer of the first byte of String value to write
offset
,
int
Length of the String value (in characters) to write
length
)

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeRawUTF8String.

Method similar to writeString(String) but that takes as its input a UTF-8 encoded String that is to be output as-is, without additional escaping (type of which depends on data format; backslashes for JSON).
public void
writeRawValue(String
Textual contents to included in output
text
)

Overrides com.fasterxml.jackson.core.base.GeneratorBase.writeRawValue.

Method that will force generator to copy input text verbatim without any modifications, but assuming it must constitute a single legal JSON value (number, string, boolean, null, Array or List).
public void
public void
public void
writeRawValue(SerializableString
Pre-encoded textual contents to included in output
text
)

Overrides com.fasterxml.jackson.core.base.GeneratorBase.writeRawValue.

Method similar to writeRawValue(String), but potentially more efficient as it may be able to use pre-encoded content (similar to writeRaw(SerializableString).
public void
writeRepeatedFieldName()

Trivial helper method called when to add a replicated wrapper name

public final void
writeStartArray()

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeStartArray.

Method for writing starting marker of a Array value (for JSON this is character '['; plus possible white space decoration if pretty-printing is enabled).
public final void
writeStartObject()

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeStartObject.

Method for writing starting marker of an Object value (character '{'; plus possible white space decoration if pretty-printing is enabled).
private void
writeStreamAsBinary(Base64Variant stax2base64v, InputStream data, int len)

public void
writeString(String
Text value to write
text
)

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeString.

Method for outputting a String value.
public void
writeString(char[]
Buffer that contains String value to write
text
,
int
Offset in buffer of the first character of String value to write
offset
,
int
Length of the String value (in characters) to write
len
)

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeString.

Method for outputting a String value.
public void
writeString(SerializableString
Pre-encoded String value to write
text
)

Overrides com.fasterxml.jackson.core.base.GeneratorBase.writeString.

Method similar to writeString(String), but that takes SerializableString which can make this potentially more efficient to call as generator may be able to reuse quoted and/or encoded representation.
public final void
writeStringField(String
Name of the field to write
fieldName
,
String
String value of the field to write
value
)

Overrides com.fasterxml.jackson.core.JsonGenerator.writeStringField.

Convenience method for outputting a field entry ("member") that has a String value.
public void
writeUTF8String(byte[]
Buffer that contains String value to write
text
,
int
Offset in buffer of the first byte of String value to write
offset
,
int
Length of the String value (in characters) to write
length
)

Implements abstract com.fasterxml.jackson.core.JsonGenerator.writeUTF8String.

Method similar to writeString(String) but that takes as its input a UTF-8 encoded String which has not been escaped using whatever escaping scheme data format requires (for JSON that is backslash-escaping for control characters and double-quotes; for other formats something else).
Inherited from com.fasterxml.jackson.core.base.GeneratorBase:
_asString_checkRangeBoundsForByteArray_checkRangeBoundsForCharArray_checkRangeBoundsForString_checkStdFeatureChanges_decodeSurrogatedisableenablegetCodecgetCurrentValuegetFeatureMaskgetOutputContextisClosedisEnabledoverrideStdFeaturessetCodecsetCurrentValuesetFeatureMaskuseDefaultPrettyPrinterversionwriteObjectwriteStartObjectwriteTree