Class XmlEventDecoder

java.lang.Object
org.springframework.core.codec.AbstractDecoder<XMLEvent>
org.springframework.http.codec.xml.XmlEventDecoder
All Implemented Interfaces:
Decoder<XMLEvent>

public class XmlEventDecoder extends AbstractDecoder<XMLEvent>
Decodes a DataBuffer stream into a stream of XMLEvents.

Given the following XML:

<root>
    <child>foo</child>
    <child>bar</child>
</root>
this decoder will produce a Flux with the following events:
  1. StartDocument
  2. StartElement root
  3. StartElement child
  4. Characters foo
  5. EndElement child
  6. StartElement child
  7. Characters bar
  8. EndElement child
  9. EndElement root

Note that this decoder is not registered by default but is used internally by other decoders which are registered by default.

Since:
5.0
Author:
Arjen Poutsma, Sam Brannen
  • Field Details

  • Constructor Details

    • XmlEventDecoder

      public XmlEventDecoder()
  • Method Details

    • setMaxInMemorySize

      public void setMaxInMemorySize(int byteCount)
      Set the max number of bytes this decoder should buffer in memory resulting in a DataBufferLimitException when the limit is exceeded.

      When joining all buffers and decoding as a whole, the limit is applied to the entire input.

      >When using Aalto XML async parsing, the limit does not apply at the level of this decoder because the XML events parsed from each buffer are emitted immediately and the buffer is released.

      By default this is set to 256K.

      Parameters:
      byteCount - the max number of bytes to buffer, or -1 for unlimited
      Since:
      5.1.11
    • getMaxInMemorySize

      public int getMaxInMemorySize()
      Return the configured byte count limit.
      Since:
      5.1.11
    • decode

      public Flux<XMLEvent> decode(Publisher<DataBuffer> input, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String,Object> hints)
      Description copied from interface: Decoder
      Decode a DataBuffer input stream into a Flux of T.
      Parameters:
      input - the DataBuffer input stream to decode
      elementType - the expected type of elements in the output stream; this type must have been previously passed to the Decoder.canDecode(ResolvableType, MimeType) method and it must have returned true.
      mimeType - the MIME type associated with the input stream (optional)
      hints - additional information about how to do decode
      Returns:
      the output stream with decoded elements