Class XmlFactory
- java.lang.Object
-
- com.fasterxml.jackson.core.TokenStreamFactory
-
- com.fasterxml.jackson.core.JsonFactory
-
- com.fasterxml.jackson.dataformat.xml.XmlFactory
-
- All Implemented Interfaces:
com.fasterxml.jackson.core.Versioned
,java.io.Serializable
public class XmlFactory extends com.fasterxml.jackson.core.JsonFactory
Factory used for constructingFromXmlParser
andToXmlGenerator
instances.Implements
JsonFactory
since interface for constructing XML backed parsers and generators is quite similar to dealing with JSON.- Author:
- Tatu Saloranta (tatu.saloranta@iki.fi)
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.String
_cfgNameForTextElement
protected java.lang.String
_jdkXmlInFactory
Hiding place for JDK-serialization unthawed factories...protected java.lang.String
_jdkXmlOutFactory
Hiding place for JDK-serialization unthawed factories...protected int
_xmlGeneratorFeatures
protected javax.xml.stream.XMLInputFactory
_xmlInputFactory
protected javax.xml.stream.XMLOutputFactory
_xmlOutputFactory
protected int
_xmlParserFeatures
static java.lang.String
FORMAT_NAME_XML
Name used to identify XML format (and returned bygetFormatName()
-
Fields inherited from class com.fasterxml.jackson.core.JsonFactory
_byteSymbolCanonicalizer, _characterEscapes, _factoryFeatures, _generatorFeatures, _inputDecorator, _maximumNonEscapedChar, _objectCodec, _outputDecorator, _parserFeatures, _quoteChar, _rootCharSymbols, _rootValueSeparator, DEFAULT_FACTORY_FEATURE_FLAGS, DEFAULT_GENERATOR_FEATURE_FLAGS, DEFAULT_PARSER_FEATURE_FLAGS, DEFAULT_QUOTE_CHAR, DEFAULT_ROOT_VALUE_SEPARATOR, FORMAT_NAME_JSON
-
-
Constructor Summary
Constructors Modifier Constructor Description XmlFactory()
Default constructor used to create factory instances.XmlFactory(com.fasterxml.jackson.core.ObjectCodec oc)
protected
XmlFactory(com.fasterxml.jackson.core.ObjectCodec oc, int xpFeatures, int xgFeatures, javax.xml.stream.XMLInputFactory xmlIn, javax.xml.stream.XMLOutputFactory xmlOut, java.lang.String nameForTextElem)
XmlFactory(com.fasterxml.jackson.core.ObjectCodec oc, javax.xml.stream.XMLInputFactory xmlIn, javax.xml.stream.XMLOutputFactory xmlOut)
protected
XmlFactory(XmlFactoryBuilder b)
Constructors used byJsonFactoryBuilder
for instantiation.protected
XmlFactory(XmlFactory src, com.fasterxml.jackson.core.ObjectCodec oc)
XmlFactory(javax.xml.stream.XMLInputFactory xmlIn)
XmlFactory(javax.xml.stream.XMLInputFactory xmlIn, javax.xml.stream.XMLOutputFactory xmlOut)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected com.fasterxml.jackson.core.JsonGenerator
_createGenerator(java.io.Writer out, com.fasterxml.jackson.core.io.IOContext ctxt)
protected FromXmlParser
_createParser(byte[] data, int offset, int len, com.fasterxml.jackson.core.io.IOContext ctxt)
protected FromXmlParser
_createParser(char[] data, int offset, int len, com.fasterxml.jackson.core.io.IOContext ctxt, boolean recycleBuffer)
protected FromXmlParser
_createParser(java.io.InputStream in, com.fasterxml.jackson.core.io.IOContext ctxt)
protected FromXmlParser
_createParser(java.io.Reader r, com.fasterxml.jackson.core.io.IOContext ctxt)
protected javax.xml.stream.XMLStreamWriter
_createXmlWriter(com.fasterxml.jackson.core.io.IOContext ctxt, java.io.OutputStream out)
protected javax.xml.stream.XMLStreamWriter
_createXmlWriter(com.fasterxml.jackson.core.io.IOContext ctxt, java.io.Writer w)
protected java.io.OutputStream
_decorate(com.fasterxml.jackson.core.io.IOContext ioCtxt, java.io.OutputStream out)
protected java.io.Writer
_decorate(com.fasterxml.jackson.core.io.IOContext ioCtxt, java.io.Writer out)
protected void
_initFactories(javax.xml.stream.XMLInputFactory xmlIn, javax.xml.stream.XMLOutputFactory xmlOut)
protected javax.xml.stream.XMLStreamReader
_initializeXmlReader(javax.xml.stream.XMLStreamReader sr)
protected javax.xml.stream.XMLStreamWriter
_initializeXmlWriter(javax.xml.stream.XMLStreamWriter sw)
static XmlFactoryBuilder
builder()
boolean
canUseCharArrays()
As of 2.4, we do have actual capability for passing char arrays efficiently, but unfortunately have no working mechanism for recycling buffers.XmlFactory
configure(FromXmlParser.Feature f, boolean state)
Method for enabling or disabling specified XML parser feature.XmlFactory
configure(ToXmlGenerator.Feature f, boolean state)
Method for enabling or disabling specified XML generator feature.XmlFactory
copy()
Note: compared to base implementation byJsonFactory
, here the copy will actually share underlying XML input and output factories, as there is no way to make copies of those.ToXmlGenerator
createGenerator(java.io.File f, com.fasterxml.jackson.core.JsonEncoding enc)
ToXmlGenerator
createGenerator(java.io.OutputStream out)
ToXmlGenerator
createGenerator(java.io.OutputStream out, com.fasterxml.jackson.core.JsonEncoding enc)
ToXmlGenerator
createGenerator(java.io.Writer out)
ToXmlGenerator
createGenerator(javax.xml.stream.XMLStreamWriter sw)
Factory method that wraps givenXMLStreamWriter
, usually to allow incremental serialization to compose large output by serializing a sequence of individual objects.com.fasterxml.jackson.core.JsonParser
createParser(java.lang.String content)
Overridden just to prevent trying to optimize access via char array; while nice idea, problem is that we don't have proper hooks to ensure that temporary buffer gets recycled; so let's just use StringReader.FromXmlParser
createParser(javax.xml.stream.XMLStreamReader sr)
Factory method that wraps givenXMLStreamReader
, usually to allow partial data-binding.XmlFactory
disable(FromXmlParser.Feature f)
Method for disabling specified XML parser feature.XmlFactory
disable(ToXmlGenerator.Feature f)
Method for disabling specified XML generator feature.XmlFactory
enable(FromXmlParser.Feature f)
Method for enabling specified XML parser feature.XmlFactory
enable(ToXmlGenerator.Feature f)
Method for enabling specified XML generator feature.int
getFormatGeneratorFeatures()
java.lang.String
getFormatName()
Method that returns short textual id identifying format this factory supports.int
getFormatParserFeatures()
java.lang.Class<FromXmlParser.Feature>
getFormatReadFeatureType()
java.lang.Class<ToXmlGenerator.Feature>
getFormatWriteFeatureType()
javax.xml.stream.XMLInputFactory
getXMLInputFactory()
javax.xml.stream.XMLOutputFactory
getXMLOutputFactory()
java.lang.String
getXMLTextElementName()
com.fasterxml.jackson.core.format.MatchStrength
hasFormat(com.fasterxml.jackson.core.format.InputAccessor acc)
static com.fasterxml.jackson.core.format.MatchStrength
hasXMLFormat(com.fasterxml.jackson.core.format.InputAccessor acc)
Method that tries to figure out if content seems to be in some kind of XML format.boolean
isEnabled(FromXmlParser.Feature f)
Checked whether specified XML parser feature is enabled.boolean
isEnabled(ToXmlGenerator.Feature f)
Check whether specified XML generator feature is enabled.protected java.lang.Object
readResolve()
Method that we need to override to actually make restoration go through constructors etc.XmlFactoryBuilder
rebuild()
boolean
requiresCustomCodec()
XML format does require support from customObjectCodec
(that is,XmlMapper
), so need to return true here.void
setXMLInputFactory(javax.xml.stream.XMLInputFactory f)
void
setXMLOutputFactory(javax.xml.stream.XMLOutputFactory f)
void
setXMLTextElementName(java.lang.String name)
com.fasterxml.jackson.core.Version
version()
-
Methods inherited from class com.fasterxml.jackson.core.JsonFactory
_checkInvalidCopy, _createContext, _createNonBlockingContext, _createParser, _createUTF8Generator, _createWriter, _decorate, _decorate, _decorate, _decorate, _decorate, _getBufferRecycler, canHandleBinaryNatively, canParseAsync, canUseSchema, configure, configure, configure, createGenerator, createGenerator, createJsonGenerator, createJsonGenerator, createJsonGenerator, createJsonParser, createJsonParser, createJsonParser, createJsonParser, createJsonParser, createJsonParser, createJsonParser, createNonBlockingByteArrayParser, createParser, createParser, createParser, createParser, createParser, createParser, createParser, createParser, createParser, disable, disable, disable, enable, enable, enable, getCharacterEscapes, getCodec, getGeneratorFeatures, getInputDecorator, getOutputDecorator, getParserFeatures, getRootValueSeparator, hasJSONFormat, isEnabled, isEnabled, isEnabled, isEnabled, isEnabled, requiresPropertyOrdering, setCharacterEscapes, setCodec, setInputDecorator, setOutputDecorator, setRootValueSeparator
-
-
-
-
Field Detail
-
FORMAT_NAME_XML
public static final java.lang.String FORMAT_NAME_XML
Name used to identify XML format (and returned bygetFormatName()
- See Also:
- Constant Field Values
-
_xmlParserFeatures
protected int _xmlParserFeatures
-
_xmlGeneratorFeatures
protected int _xmlGeneratorFeatures
-
_xmlInputFactory
protected transient javax.xml.stream.XMLInputFactory _xmlInputFactory
-
_xmlOutputFactory
protected transient javax.xml.stream.XMLOutputFactory _xmlOutputFactory
-
_cfgNameForTextElement
protected java.lang.String _cfgNameForTextElement
-
_jdkXmlInFactory
protected transient java.lang.String _jdkXmlInFactory
Hiding place for JDK-serialization unthawed factories...
-
_jdkXmlOutFactory
protected transient java.lang.String _jdkXmlOutFactory
Hiding place for JDK-serialization unthawed factories...
-
-
Constructor Detail
-
XmlFactory
public XmlFactory()
Default constructor used to create factory instances. Creation of a factory instance is a light-weight operation, but it is still a good idea to reuse limited number of factory instances (and quite often just a single instance): factories are used as context for storing some reused processing objects (such as symbol tables parsers use) and this reuse only works within context of a single factory instance.
-
XmlFactory
public XmlFactory(com.fasterxml.jackson.core.ObjectCodec oc)
-
XmlFactory
public XmlFactory(javax.xml.stream.XMLInputFactory xmlIn)
-
XmlFactory
public XmlFactory(javax.xml.stream.XMLInputFactory xmlIn, javax.xml.stream.XMLOutputFactory xmlOut)
-
XmlFactory
public XmlFactory(com.fasterxml.jackson.core.ObjectCodec oc, javax.xml.stream.XMLInputFactory xmlIn, javax.xml.stream.XMLOutputFactory xmlOut)
-
XmlFactory
protected XmlFactory(com.fasterxml.jackson.core.ObjectCodec oc, int xpFeatures, int xgFeatures, javax.xml.stream.XMLInputFactory xmlIn, javax.xml.stream.XMLOutputFactory xmlOut, java.lang.String nameForTextElem)
-
XmlFactory
protected XmlFactory(XmlFactory src, com.fasterxml.jackson.core.ObjectCodec oc)
- Since:
- 2.2.1
-
XmlFactory
protected XmlFactory(XmlFactoryBuilder b)
Constructors used byJsonFactoryBuilder
for instantiation.- Since:
- 2.9
-
-
Method Detail
-
builder
public static XmlFactoryBuilder builder()
-
rebuild
public XmlFactoryBuilder rebuild()
- Overrides:
rebuild
in classcom.fasterxml.jackson.core.JsonFactory
-
_initFactories
protected void _initFactories(javax.xml.stream.XMLInputFactory xmlIn, javax.xml.stream.XMLOutputFactory xmlOut)
-
copy
public XmlFactory copy()
Note: compared to base implementation byJsonFactory
, here the copy will actually share underlying XML input and output factories, as there is no way to make copies of those.- Overrides:
copy
in classcom.fasterxml.jackson.core.JsonFactory
-
version
public com.fasterxml.jackson.core.Version version()
- Specified by:
version
in interfacecom.fasterxml.jackson.core.Versioned
- Overrides:
version
in classcom.fasterxml.jackson.core.JsonFactory
-
readResolve
protected java.lang.Object readResolve()
Method that we need to override to actually make restoration go through constructors etc.- Overrides:
readResolve
in classcom.fasterxml.jackson.core.JsonFactory
-
setXMLTextElementName
public void setXMLTextElementName(java.lang.String name)
- Since:
- 2.1
-
getXMLTextElementName
public java.lang.String getXMLTextElementName()
- Since:
- 2.2
-
configure
public final XmlFactory configure(FromXmlParser.Feature f, boolean state)
Method for enabling or disabling specified XML parser feature.
-
enable
public XmlFactory enable(FromXmlParser.Feature f)
Method for enabling specified XML parser feature.
-
disable
public XmlFactory disable(FromXmlParser.Feature f)
Method for disabling specified XML parser feature.
-
isEnabled
public final boolean isEnabled(FromXmlParser.Feature f)
Checked whether specified XML parser feature is enabled.
-
getFormatParserFeatures
public int getFormatParserFeatures()
- Overrides:
getFormatParserFeatures
in classcom.fasterxml.jackson.core.JsonFactory
-
getFormatGeneratorFeatures
public int getFormatGeneratorFeatures()
- Overrides:
getFormatGeneratorFeatures
in classcom.fasterxml.jackson.core.JsonFactory
-
configure
public final XmlFactory configure(ToXmlGenerator.Feature f, boolean state)
Method for enabling or disabling specified XML generator feature.
-
enable
public XmlFactory enable(ToXmlGenerator.Feature f)
Method for enabling specified XML generator feature.
-
disable
public XmlFactory disable(ToXmlGenerator.Feature f)
Method for disabling specified XML generator feature.
-
isEnabled
public final boolean isEnabled(ToXmlGenerator.Feature f)
Check whether specified XML generator feature is enabled.
-
getXMLInputFactory
public javax.xml.stream.XMLInputFactory getXMLInputFactory()
- Since:
- 2.4
-
setXMLInputFactory
public void setXMLInputFactory(javax.xml.stream.XMLInputFactory f)
-
getXMLOutputFactory
public javax.xml.stream.XMLOutputFactory getXMLOutputFactory()
- Since:
- 2.4
-
setXMLOutputFactory
public void setXMLOutputFactory(javax.xml.stream.XMLOutputFactory f)
-
getFormatName
public java.lang.String getFormatName()
Method that returns short textual id identifying format this factory supports.Note: sub-classes should override this method; default implementation will return null for all sub-classes
- Overrides:
getFormatName
in classcom.fasterxml.jackson.core.JsonFactory
-
hasFormat
public com.fasterxml.jackson.core.format.MatchStrength hasFormat(com.fasterxml.jackson.core.format.InputAccessor acc) throws java.io.IOException
- Overrides:
hasFormat
in classcom.fasterxml.jackson.core.JsonFactory
- Throws:
java.io.IOException
-
requiresCustomCodec
public boolean requiresCustomCodec()
XML format does require support from customObjectCodec
(that is,XmlMapper
), so need to return true here.- Overrides:
requiresCustomCodec
in classcom.fasterxml.jackson.core.JsonFactory
- Returns:
- True since XML format does require support from codec
-
canUseCharArrays
public boolean canUseCharArrays()
As of 2.4, we do have actual capability for passing char arrays efficiently, but unfortunately have no working mechanism for recycling buffers. So we have to admit that can not make efficient use.- Overrides:
canUseCharArrays
in classcom.fasterxml.jackson.core.JsonFactory
-
getFormatReadFeatureType
public java.lang.Class<FromXmlParser.Feature> getFormatReadFeatureType()
- Overrides:
getFormatReadFeatureType
in classcom.fasterxml.jackson.core.JsonFactory
-
getFormatWriteFeatureType
public java.lang.Class<ToXmlGenerator.Feature> getFormatWriteFeatureType()
- Overrides:
getFormatWriteFeatureType
in classcom.fasterxml.jackson.core.JsonFactory
-
createParser
public com.fasterxml.jackson.core.JsonParser createParser(java.lang.String content) throws java.io.IOException
Overridden just to prevent trying to optimize access via char array; while nice idea, problem is that we don't have proper hooks to ensure that temporary buffer gets recycled; so let's just use StringReader.- Overrides:
createParser
in classcom.fasterxml.jackson.core.JsonFactory
- Throws:
java.io.IOException
-
createGenerator
public ToXmlGenerator createGenerator(java.io.OutputStream out) throws java.io.IOException
- Overrides:
createGenerator
in classcom.fasterxml.jackson.core.JsonFactory
- Throws:
java.io.IOException
-
createGenerator
public ToXmlGenerator createGenerator(java.io.OutputStream out, com.fasterxml.jackson.core.JsonEncoding enc) throws java.io.IOException
- Overrides:
createGenerator
in classcom.fasterxml.jackson.core.JsonFactory
- Throws:
java.io.IOException
-
createGenerator
public ToXmlGenerator createGenerator(java.io.Writer out) throws java.io.IOException
- Overrides:
createGenerator
in classcom.fasterxml.jackson.core.JsonFactory
- Throws:
java.io.IOException
-
createGenerator
public ToXmlGenerator createGenerator(java.io.File f, com.fasterxml.jackson.core.JsonEncoding enc) throws java.io.IOException
- Overrides:
createGenerator
in classcom.fasterxml.jackson.core.JsonFactory
- Throws:
java.io.IOException
-
createParser
public FromXmlParser createParser(javax.xml.stream.XMLStreamReader sr) throws java.io.IOException
Factory method that wraps givenXMLStreamReader
, usually to allow partial data-binding.- Throws:
java.io.IOException
- Since:
- 2.4
-
createGenerator
public ToXmlGenerator createGenerator(javax.xml.stream.XMLStreamWriter sw) throws java.io.IOException
Factory method that wraps givenXMLStreamWriter
, usually to allow incremental serialization to compose large output by serializing a sequence of individual objects.- Throws:
java.io.IOException
- Since:
- 2.4
-
_createParser
protected FromXmlParser _createParser(java.io.InputStream in, com.fasterxml.jackson.core.io.IOContext ctxt) throws java.io.IOException
- Overrides:
_createParser
in classcom.fasterxml.jackson.core.JsonFactory
- Throws:
java.io.IOException
-
_createParser
protected FromXmlParser _createParser(java.io.Reader r, com.fasterxml.jackson.core.io.IOContext ctxt) throws java.io.IOException
- Overrides:
_createParser
in classcom.fasterxml.jackson.core.JsonFactory
- Throws:
java.io.IOException
-
_createParser
protected FromXmlParser _createParser(char[] data, int offset, int len, com.fasterxml.jackson.core.io.IOContext ctxt, boolean recycleBuffer) throws java.io.IOException
- Overrides:
_createParser
in classcom.fasterxml.jackson.core.JsonFactory
- Throws:
java.io.IOException
-
_createParser
protected FromXmlParser _createParser(byte[] data, int offset, int len, com.fasterxml.jackson.core.io.IOContext ctxt) throws java.io.IOException
- Overrides:
_createParser
in classcom.fasterxml.jackson.core.JsonFactory
- Throws:
java.io.IOException
-
_createGenerator
protected com.fasterxml.jackson.core.JsonGenerator _createGenerator(java.io.Writer out, com.fasterxml.jackson.core.io.IOContext ctxt) throws java.io.IOException
- Overrides:
_createGenerator
in classcom.fasterxml.jackson.core.JsonFactory
- Throws:
java.io.IOException
-
_createXmlWriter
protected javax.xml.stream.XMLStreamWriter _createXmlWriter(com.fasterxml.jackson.core.io.IOContext ctxt, java.io.OutputStream out) throws java.io.IOException
- Throws:
java.io.IOException
-
_createXmlWriter
protected javax.xml.stream.XMLStreamWriter _createXmlWriter(com.fasterxml.jackson.core.io.IOContext ctxt, java.io.Writer w) throws java.io.IOException
- Throws:
java.io.IOException
-
_initializeXmlWriter
protected final javax.xml.stream.XMLStreamWriter _initializeXmlWriter(javax.xml.stream.XMLStreamWriter sw) throws java.io.IOException
- Throws:
java.io.IOException
-
_initializeXmlReader
protected final javax.xml.stream.XMLStreamReader _initializeXmlReader(javax.xml.stream.XMLStreamReader sr) throws java.io.IOException
- Throws:
java.io.IOException
-
hasXMLFormat
public static com.fasterxml.jackson.core.format.MatchStrength hasXMLFormat(com.fasterxml.jackson.core.format.InputAccessor acc) throws java.io.IOException
Method that tries to figure out if content seems to be in some kind of XML format. Note that implementation here is not nearly as robust as what underlying Stax parser will do; the idea is to first support common encodings, then expand as needed (for example, it is not all that hard to support UTF-16; but it is some work and not needed quite yet)- Throws:
java.io.IOException
-
_decorate
protected java.io.OutputStream _decorate(com.fasterxml.jackson.core.io.IOContext ioCtxt, java.io.OutputStream out) throws java.io.IOException
- Throws:
java.io.IOException
-
_decorate
protected java.io.Writer _decorate(com.fasterxml.jackson.core.io.IOContext ioCtxt, java.io.Writer out) throws java.io.IOException
- Throws:
java.io.IOException
-
-