Class XmlStreamReader.Builder

  • All Implemented Interfaces:
    IOSupplier<XmlStreamReader>
    Enclosing class:
    XmlStreamReader

    public static class XmlStreamReader.Builder
    extends AbstractStreamBuilder<XmlStreamReader,​XmlStreamReader.Builder>
    Builds a new XmlStreamWriter instance. Constructs a Reader using an InputStream and the associated content-type header. This constructor is lenient regarding the encoding detection.

    First it checks if the stream has BOM. If there is not BOM checks the content-type encoding. If there is not content-type encoding checks the XML prolog encoding. If there is not XML prolog encoding uses the default encoding mandated by the content-type MIME type.

    If lenient detection is indicated and the detection above fails as per specifications it then attempts the following:

    If the content type was 'text/html' it replaces it with 'text/xml' and tries the detection again.

    Else if the XML prolog had a charset encoding that encoding is used.

    Else if the content type had a charset encoding that encoding is used.

    Else 'UTF-8' is used.

    If lenient detection is indicated an XmlStreamReaderException is never thrown.

    For example:

    
     XmlStreamReader r = XmlStreamReader.builder().setPath(path).setCharset(StandardCharsets.UTF_8).get();
     
     
    Since:
    2.12.0
    • Constructor Detail

      • Builder

        public Builder()
    • Method Detail

      • get

        public XmlStreamReader get()
                            throws java.io.IOException
        Constructs a new instance.

        This builder use the aspect InputStream, OpenOption[], httpContentType, lenient, and defaultEncoding.

        You must provide an origin that can be converted to an InputStream by this builder, otherwise, this call will throw an UnsupportedOperationException.

        Returns:
        a new instance.
        Throws:
        java.lang.UnsupportedOperationException - if the origin cannot provide an InputStream.
        java.io.IOException - thrown if there is a problem reading the stream.
        XmlStreamReaderException - thrown if the charset encoding could not be determined according to the specification.
        See Also:
        AbstractStreamBuilder.getInputStream()
      • setHttpContentType

        public XmlStreamReader.Builder setHttpContentType​(java.lang.String httpContentType)
        Sets the HTTP content type.
        Parameters:
        httpContentType - the HTTP content type.
        Returns:
        this.
      • setLenient

        public XmlStreamReader.Builder setLenient​(boolean lenient)
        Sets the lenient toggle.
        Parameters:
        lenient - the lenient toggle.
        Returns:
        this.