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, Serializable

public class XmlFactory extends com.fasterxml.jackson.core.JsonFactory
Factory used for constructing FromXmlParser and ToXmlGenerator instances.

Implements JsonFactory since interface for constructing XML backed parsers and generators is quite similar to dealing with JSON.

See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • FORMAT_NAME_XML

      public static final String FORMAT_NAME_XML
      Name used to identify XML format (and returned by getFormatName()
      See Also:
    • DEFAULT_XML_PARSER_FEATURE_FLAGS

      static final int DEFAULT_XML_PARSER_FEATURE_FLAGS
      Bitfield (set of flags) of all parser features that are enabled by default.
    • DEFAULT_XML_GENERATOR_FEATURE_FLAGS

      static final int DEFAULT_XML_GENERATOR_FEATURE_FLAGS
      Bitfield (set of flags) of all generator features that are enabled by default.
    • _xmlParserFeatures

      protected int _xmlParserFeatures
    • _xmlGeneratorFeatures

      protected int _xmlGeneratorFeatures
    • _xmlInputFactory

      protected transient XMLInputFactory _xmlInputFactory
    • _xmlOutputFactory

      protected transient XMLOutputFactory _xmlOutputFactory
    • _cfgNameForTextElement

      protected String _cfgNameForTextElement
    • _nameProcessor

      protected XmlNameProcessor _nameProcessor
    • _jdkXmlInFactory

      protected transient String _jdkXmlInFactory
      Hiding place for JDK-serialization unthawed factories...
    • _jdkXmlOutFactory

      protected transient String _jdkXmlOutFactory
      Hiding place for JDK-serialization unthawed factories...
    • UTF8_BOM_1

      private static final byte UTF8_BOM_1
      See Also:
    • UTF8_BOM_2

      private static final byte UTF8_BOM_2
      See Also:
    • UTF8_BOM_3

      private static final byte UTF8_BOM_3
      See Also:
    • BYTE_x

      private static final byte BYTE_x
      See Also:
    • BYTE_m

      private static final byte BYTE_m
      See Also:
    • BYTE_l

      private static final byte BYTE_l
      See Also:
    • BYTE_D

      private static final byte BYTE_D
      See Also:
    • BYTE_LT

      private static final byte BYTE_LT
      See Also:
    • BYTE_QMARK

      private static final byte BYTE_QMARK
      See Also:
    • BYTE_EXCL

      private static final byte BYTE_EXCL
      See Also:
    • BYTE_HYPHEN

      private static final byte BYTE_HYPHEN
      See Also:
  • Constructor Details

    • 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(XMLInputFactory xmlIn)
    • XmlFactory

      public XmlFactory(XMLInputFactory xmlIn, XMLOutputFactory xmlOut)
    • XmlFactory

      public XmlFactory(com.fasterxml.jackson.core.ObjectCodec oc, XMLInputFactory xmlIn, XMLOutputFactory xmlOut)
    • XmlFactory

      public XmlFactory(com.fasterxml.jackson.core.ObjectCodec oc, int xpFeatures, int xgFeatures, XMLInputFactory xmlIn, XMLOutputFactory xmlOut, String nameForTextElem)
    • XmlFactory

      protected XmlFactory(com.fasterxml.jackson.core.ObjectCodec oc, int xpFeatures, int xgFeatures, XMLInputFactory xmlIn, XMLOutputFactory xmlOut, String nameForTextElem, XmlNameProcessor nameProcessor)
    • XmlFactory

      protected XmlFactory(XmlFactory src, com.fasterxml.jackson.core.ObjectCodec oc)
      Since:
      2.2.1
    • XmlFactory

      protected XmlFactory(XmlFactoryBuilder b)
      Constructors used by JsonFactoryBuilder for instantiation.
      Since:
      2.9
  • Method Details

    • builder

      public static XmlFactoryBuilder builder()
    • rebuild

      public XmlFactoryBuilder rebuild()
      Overrides:
      rebuild in class com.fasterxml.jackson.core.JsonFactory
    • _initFactories

      protected void _initFactories(XMLInputFactory xmlIn, XMLOutputFactory xmlOut)
    • copy

      public XmlFactory copy()
      Note: compared to base implementation by JsonFactory, 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 class com.fasterxml.jackson.core.JsonFactory
    • version

      public com.fasterxml.jackson.core.Version version()
      Specified by:
      version in interface com.fasterxml.jackson.core.Versioned
      Overrides:
      version in class com.fasterxml.jackson.core.JsonFactory
    • readResolve

      protected Object readResolve()
      Method that we need to override to actually make restoration go through constructors etc.
      Overrides:
      readResolve in class com.fasterxml.jackson.core.JsonFactory
    • readObject

      private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
      In addition to default serialization, which mostly works, need to handle case of XML factories, hence override.
      Throws:
      IOException
      ClassNotFoundException
    • writeObject

      private void writeObject(ObjectOutputStream out) throws IOException
      In addition to default serialization, which mostly works, need to handle case of XML factories, hence override.
      Throws:
      IOException
    • setXMLTextElementName

      public void setXMLTextElementName(String name)
      Since:
      2.1
    • getXMLTextElementName

      public 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 class com.fasterxml.jackson.core.JsonFactory
    • getFormatGeneratorFeatures

      public int getFormatGeneratorFeatures()
      Overrides:
      getFormatGeneratorFeatures in class com.fasterxml.jackson.core.JsonFactory
    • getXmlNameProcessor

      public XmlNameProcessor getXmlNameProcessor()
    • setXmlNameProcessor

      public void setXmlNameProcessor(XmlNameProcessor processor)
    • configure

      public final XmlFactory configure(ToXmlGenerator.Feature f, boolean state)
      Method for enabling or disabling specified XML generator feature.
    • enable

      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 XMLInputFactory getXMLInputFactory()
      Since:
      2.4
    • setXMLInputFactory

      @Deprecated public void setXMLInputFactory(XMLInputFactory f)
      Deprecated.
      Since 2.12 -- should be set as part of build process (either in builder, or constructor)
    • getXMLOutputFactory

      public XMLOutputFactory getXMLOutputFactory()
      Since:
      2.4
    • setXMLOutputFactory

      @Deprecated public void setXMLOutputFactory(XMLOutputFactory f)
      Deprecated.
      Since 2.12 -- should be set as part of build process (either in builder, or constructor)
    • getFormatName

      public 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 class com.fasterxml.jackson.core.JsonFactory
    • hasFormat

      public com.fasterxml.jackson.core.format.MatchStrength hasFormat(com.fasterxml.jackson.core.format.InputAccessor acc) throws IOException
      Overrides:
      hasFormat in class com.fasterxml.jackson.core.JsonFactory
      Throws:
      IOException
    • requiresCustomCodec

      public boolean requiresCustomCodec()
      XML format does require support from custom ObjectCodec (that is, XmlMapper), so need to return true here.
      Overrides:
      requiresCustomCodec in class com.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 class com.fasterxml.jackson.core.JsonFactory
    • getFormatReadFeatureType

      public Class<FromXmlParser.Feature> getFormatReadFeatureType()
      Overrides:
      getFormatReadFeatureType in class com.fasterxml.jackson.core.JsonFactory
    • getFormatWriteFeatureType

      public Class<ToXmlGenerator.Feature> getFormatWriteFeatureType()
      Overrides:
      getFormatWriteFeatureType in class com.fasterxml.jackson.core.JsonFactory
    • createParser

      public com.fasterxml.jackson.core.JsonParser createParser(String content) throws 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 class com.fasterxml.jackson.core.JsonFactory
      Throws:
      IOException
    • createGenerator

      public ToXmlGenerator createGenerator(OutputStream out) throws IOException
      Overrides:
      createGenerator in class com.fasterxml.jackson.core.JsonFactory
      Throws:
      IOException
    • createGenerator

      public ToXmlGenerator createGenerator(OutputStream out, com.fasterxml.jackson.core.JsonEncoding enc) throws IOException
      Overrides:
      createGenerator in class com.fasterxml.jackson.core.JsonFactory
      Throws:
      IOException
    • createGenerator

      public ToXmlGenerator createGenerator(Writer out) throws IOException
      Overrides:
      createGenerator in class com.fasterxml.jackson.core.JsonFactory
      Throws:
      IOException
    • createGenerator

      public ToXmlGenerator createGenerator(File f, com.fasterxml.jackson.core.JsonEncoding enc) throws IOException
      Overrides:
      createGenerator in class com.fasterxml.jackson.core.JsonFactory
      Throws:
      IOException
    • createParser

      public FromXmlParser createParser(XMLStreamReader sr) throws IOException
      Factory method that wraps given XMLStreamReader, usually to allow partial data-binding.
      Throws:
      IOException
      Since:
      2.4
    • createGenerator

      public ToXmlGenerator createGenerator(XMLStreamWriter sw) throws IOException
      Factory method that wraps given XMLStreamWriter, usually to allow incremental serialization to compose large output by serializing a sequence of individual objects.
      Throws:
      IOException
      Since:
      2.4
    • _createParser

      protected FromXmlParser _createParser(InputStream in, com.fasterxml.jackson.core.io.IOContext ctxt) throws IOException
      Overrides:
      _createParser in class com.fasterxml.jackson.core.JsonFactory
      Throws:
      IOException
    • _createParser

      protected FromXmlParser _createParser(Reader r, com.fasterxml.jackson.core.io.IOContext ctxt) throws IOException
      Overrides:
      _createParser in class com.fasterxml.jackson.core.JsonFactory
      Throws:
      IOException
    • _createParser

      protected FromXmlParser _createParser(char[] data, int offset, int len, com.fasterxml.jackson.core.io.IOContext ctxt, boolean recycleBuffer) throws IOException
      Overrides:
      _createParser in class com.fasterxml.jackson.core.JsonFactory
      Throws:
      IOException
    • _createParser

      protected FromXmlParser _createParser(byte[] data, int offset, int len, com.fasterxml.jackson.core.io.IOContext ctxt) throws IOException
      Overrides:
      _createParser in class com.fasterxml.jackson.core.JsonFactory
      Throws:
      IOException
    • _createGenerator

      protected com.fasterxml.jackson.core.JsonGenerator _createGenerator(Writer out, com.fasterxml.jackson.core.io.IOContext ctxt) throws IOException
      Overrides:
      _createGenerator in class com.fasterxml.jackson.core.JsonFactory
      Throws:
      IOException
    • _createXmlWriter

      protected XMLStreamWriter _createXmlWriter(com.fasterxml.jackson.core.io.IOContext ctxt, OutputStream out) throws IOException
      Throws:
      IOException
    • _createXmlWriter

      protected XMLStreamWriter _createXmlWriter(com.fasterxml.jackson.core.io.IOContext ctxt, Writer w) throws IOException
      Throws:
      IOException
    • _initializeXmlWriter

      protected final XMLStreamWriter _initializeXmlWriter(XMLStreamWriter sw) throws IOException
      Throws:
      IOException
    • _initializeXmlReader

      protected final XMLStreamReader _initializeXmlReader(XMLStreamReader sr) throws IOException
      Throws:
      IOException
    • hasXMLFormat

      public static com.fasterxml.jackson.core.format.MatchStrength hasXMLFormat(com.fasterxml.jackson.core.format.InputAccessor acc) throws 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:
      IOException
    • validXmlNameStartChar

      private static final boolean validXmlNameStartChar(com.fasterxml.jackson.core.format.InputAccessor acc, byte b) throws IOException
      Throws:
      IOException
    • tryMatch

      private static final com.fasterxml.jackson.core.format.MatchStrength tryMatch(com.fasterxml.jackson.core.format.InputAccessor acc, String matchStr, com.fasterxml.jackson.core.format.MatchStrength fullMatchStrength) throws IOException
      Throws:
      IOException
    • skipSpace

      private static final int skipSpace(com.fasterxml.jackson.core.format.InputAccessor acc, byte b) throws IOException
      Throws:
      IOException
    • _decorate

      protected OutputStream _decorate(com.fasterxml.jackson.core.io.IOContext ioCtxt, OutputStream out) throws IOException
      Throws:
      IOException
    • _decorate

      protected Writer _decorate(com.fasterxml.jackson.core.io.IOContext ioCtxt, Writer out) throws IOException
      Throws:
      IOException