Class XmlFactory

  • All Implemented Interfaces:
    com.fasterxml.jackson.core.Versioned, java.io.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.

    Author:
    Tatu Saloranta (tatu.saloranta@iki.fi)
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class com.fasterxml.jackson.core.JsonFactory

        com.fasterxml.jackson.core.JsonFactory.Feature
    • 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 by getFormatName()
      • 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 by JsonFactoryBuilder 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 by JsonFactory, 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 given XMLStreamWriter, 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 given XMLStreamReader, 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 custom ObjectCodec (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
      • Methods inherited from class com.fasterxml.jackson.core.TokenStreamFactory

        _createDataOutputWrapper, _optimizedStreamFromURL
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • _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 by JsonFactoryBuilder for instantiation.
        Since:
        2.9
    • Method Detail

      • rebuild

        public XmlFactoryBuilder rebuild()
        Overrides:
        rebuild in class com.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 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 java.lang.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
      • 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.
      • 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
      • 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 class com.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 class com.fasterxml.jackson.core.JsonFactory
        Throws:
        java.io.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 java.lang.Class<FromXmlParser.Feature> getFormatReadFeatureType()
        Overrides:
        getFormatReadFeatureType in class com.fasterxml.jackson.core.JsonFactory
      • getFormatWriteFeatureType

        public java.lang.Class<ToXmlGenerator.Feature> getFormatWriteFeatureType()
        Overrides:
        getFormatWriteFeatureType in class com.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 class com.fasterxml.jackson.core.JsonFactory
        Throws:
        java.io.IOException
      • createGenerator

        public ToXmlGenerator createGenerator​(java.io.OutputStream out)
                                       throws java.io.IOException
        Overrides:
        createGenerator in class com.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 class com.fasterxml.jackson.core.JsonFactory
        Throws:
        java.io.IOException
      • createGenerator

        public ToXmlGenerator createGenerator​(java.io.Writer out)
                                       throws java.io.IOException
        Overrides:
        createGenerator in class com.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 class com.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 given XMLStreamReader, 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 given XMLStreamWriter, 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 class com.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 class com.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 class com.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 class com.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 class com.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