Class XmlFactory

  • All Implemented Interfaces:
    Versioned, java.io.Serializable

    public class XmlFactory
    extends 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:
    Serialized Form
    • 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​(javax.xml.stream.XMLInputFactory xmlIn)
      • XmlFactory

        public XmlFactory​(javax.xml.stream.XMLInputFactory xmlIn,
                          javax.xml.stream.XMLOutputFactory xmlOut)
      • XmlFactory

        public XmlFactory​(ObjectCodec oc,
                          javax.xml.stream.XMLInputFactory xmlIn,
                          javax.xml.stream.XMLOutputFactory xmlOut)
    • Method Detail

      • rebuild

        public XmlFactoryBuilder rebuild()
        Description copied from class: JsonFactory
        Method that allows construction of differently configured factory, starting with settings of this factory.
        Overrides:
        rebuild in class JsonFactory
        Returns:
        Builder instance to use
      • 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 JsonFactory
        Returns:
        Copy of this factory instance
      • version

        public Version version()
        Description copied from interface: Versioned
        Method called to detect version of the component that implements this interface; returned version should never be null, but may return specific "not available" instance (see Version for details).
        Specified by:
        version in interface Versioned
        Overrides:
        version in class JsonFactory
        Returns:
        Version of the component
      • 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​(com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser.Feature f,
                                          boolean state)
        Method for enabling or disabling specified XML parser feature.
      • enable

        public XmlFactory enable​(com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser.Feature f)
        Method for enabling specified XML parser feature.
      • disable

        public XmlFactory disable​(com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser.Feature f)
        Method for disabling specified XML parser feature.
      • isEnabled

        public final boolean isEnabled​(com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser.Feature f)
        Checked whether specified XML parser feature is enabled.
      • configure

        public final XmlFactory configure​(com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator.Feature f,
                                          boolean state)
        Method for enabling or disabling specified XML generator feature.
      • enable

        public XmlFactory enable​(com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator.Feature f)
        Method for enabling specified XML generator feature.
      • disable

        public XmlFactory disable​(com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator.Feature f)
        Method for disabling specified XML generator feature.
      • isEnabled

        public final boolean isEnabled​(com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator.Feature f)
        Check whether specified XML generator feature is enabled.
      • getXMLInputFactory

        public javax.xml.stream.XMLInputFactory getXMLInputFactory()
        Since:
        2.4
      • setXMLInputFactory

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

        public javax.xml.stream.XMLOutputFactory getXMLOutputFactory()
        Since:
        2.4
      • setXMLOutputFactory

        @Deprecated
        public void setXMLOutputFactory​(javax.xml.stream.XMLOutputFactory f)
        Deprecated.
        Since 2.12 -- should be set as part of build process (either in builder, or constructor)
      • 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 JsonFactory
        Returns:
        Name of the format handled by parsers, generators this factory creates
      • 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 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 JsonFactory
        Returns:
        Whether access to decoded textual content can be efficiently accessed using parser method getTextCharacters().
      • getFormatReadFeatureType

        public java.lang.Class<com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser.Feature> getFormatReadFeatureType()
        Description copied from class: TokenStreamFactory
        Method for accessing kind of FormatFeature that a parser JsonParser produced by this factory would accept, if any; null returned if none.
        Overrides:
        getFormatReadFeatureType in class JsonFactory
        Returns:
        Type of format-specific stream read features, if any; null if none
      • getFormatWriteFeatureType

        public java.lang.Class<com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator.Feature> getFormatWriteFeatureType()
        Description copied from class: TokenStreamFactory
        Method for accessing kind of FormatFeature that a parser JsonGenerator produced by this factory would accept, if any; null returned if none.
        Overrides:
        getFormatWriteFeatureType in class JsonFactory
        Returns:
        Type of format-specific stream read features, if any; null if none
      • createParser

        public 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 JsonFactory
        Throws:
        java.io.IOException
      • createGenerator

        public com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator createGenerator​(java.io.OutputStream out)
                                                                                throws java.io.IOException
        Description copied from class: JsonFactory
        Convenience method for constructing generator that uses default encoding of the format (UTF-8 for JSON and most other data formats).

        Note: there are formats that use fixed encoding (like most binary data formats).

        Overrides:
        createGenerator in class JsonFactory
        Throws:
        java.io.IOException
      • createGenerator

        public com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator createGenerator​(java.io.OutputStream out,
                                                                                       JsonEncoding enc)
                                                                                throws java.io.IOException
        Description copied from class: JsonFactory
        Method for constructing JSON generator for writing JSON content using specified output stream. Encoding to use must be specified, and needs to be one of available types (as per JSON specification).

        Underlying stream is NOT owned by the generator constructed, so that generator will NOT close the output stream when JsonGenerator.close() is called (unless auto-closing feature, JsonGenerator.Feature.AUTO_CLOSE_TARGET is enabled). Using application needs to close it explicitly if this is the case.

        Note: there are formats that use fixed encoding (like most binary data formats) and that ignore passed in encoding.

        Overrides:
        createGenerator in class JsonFactory
        Parameters:
        out - OutputStream to use for writing JSON content
        enc - Character encoding to use
        Throws:
        java.io.IOException
      • createGenerator

        public com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator createGenerator​(java.io.Writer out)
                                                                                throws java.io.IOException
        Description copied from class: JsonFactory
        Method for constructing JSON generator for writing JSON content using specified Writer.

        Underlying stream is NOT owned by the generator constructed, so that generator will NOT close the Reader when JsonGenerator.close() is called (unless auto-closing feature, JsonGenerator.Feature.AUTO_CLOSE_TARGET is enabled). Using application needs to close it explicitly.

        Overrides:
        createGenerator in class JsonFactory
        Parameters:
        out - Writer to use for writing JSON content
        Throws:
        java.io.IOException
      • createGenerator

        public com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator createGenerator​(java.io.File f,
                                                                                       JsonEncoding enc)
                                                                                throws java.io.IOException
        Description copied from class: JsonFactory
        Method for constructing JSON generator for writing JSON content to specified file, overwriting contents it might have (or creating it if such file does not yet exist). Encoding to use must be specified, and needs to be one of available types (as per JSON specification).

        Underlying stream is owned by the generator constructed, i.e. generator will handle closing of file when JsonGenerator.close() is called.

        Overrides:
        createGenerator in class JsonFactory
        Parameters:
        f - File to write contents to
        enc - Character encoding to use
        Throws:
        java.io.IOException
      • createParser

        public com.fasterxml.jackson.dataformat.xml.deser.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 com.fasterxml.jackson.dataformat.xml.ser.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
      • hasXMLFormat

        public static MatchStrength hasXMLFormat​(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