Class XmlReader

java.lang.Object
java.io.Reader
com.bea.xml.stream.reader.XmlReader
All Implemented Interfaces:
Closeable, AutoCloseable, Readable

public final class XmlReader extends Reader
This handles several XML-related tasks that normal java.io Readers don't support, inluding use of IETF standard encoding names and automatic detection of most XML encodings. The former is needed for interoperability; the latter is needed to conform with the XML spec. This class also optimizes reading some common encodings by providing low-overhead unsynchronized Reader support.

Note that the autodetection facility should be used only on data streams which have an unknown character encoding. For example, it should never be used on MIME text/xml entities.

Note that XML processors are only required to support UTF-8 and UTF-16 character encodings. Autodetection permits the underlying Java implementation to provide support for many other encodings, such as US-ASCII, ISO-8859-5, Shift_JIS, EUC-JP, and ISO-2022-JP.

Version:
$Revision: 1.1 $
Author:
David Brownell
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
     
  • Field Summary

    Fields inherited from class java.io.Reader

    lock
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Closes the reader.
    static Reader
    Constructs the reader from an input stream, autodetecting the encoding to use according to the heuristic specified in the XML 1.0 recommendation.
    static Reader
    Creates a reader supporting the given encoding, mapping from standard encoding names to ones that understood by Java where necessary.
    Returns the standard name of the encoding in use
    void
    mark(int value)
    Sets a mark allowing a limited number of characters to be "peeked", by reading and then resetting.
    boolean
    Returns true iff the reader supports mark/reset.
    int
    Reads a single character.
    int
    read(char[] buf, int off, int len)
    Reads the number of characters read into the buffer, or -1 on EOF.
    boolean
    Returns true iff input characters are known to be ready.
    void
    Resets the current position to the last marked position.
    long
    skip(long value)
    Skips a specified number of characters.

    Methods inherited from class java.io.Reader

    nullReader, read, read, transferTo

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • createReader

      public static Reader createReader(InputStream in) throws IOException
      Constructs the reader from an input stream, autodetecting the encoding to use according to the heuristic specified in the XML 1.0 recommendation.
      Parameters:
      in - the input stream from which the reader is constructed
      Throws:
      IOException - on error, such as unrecognized encoding
    • createReader

      public static Reader createReader(InputStream in, String encoding) throws IOException
      Creates a reader supporting the given encoding, mapping from standard encoding names to ones that understood by Java where necessary.
      Parameters:
      in - the input stream from which the reader is constructed
      encoding - the IETF standard name of the encoding to use; if null, autodetection is used.
      Throws:
      IOException - on error, including unrecognized encoding
    • getEncoding

      public String getEncoding()
      Returns the standard name of the encoding in use
    • read

      public int read(char[] buf, int off, int len) throws IOException
      Reads the number of characters read into the buffer, or -1 on EOF.
      Specified by:
      read in class Reader
      Throws:
      IOException
    • read

      public int read() throws IOException
      Reads a single character.
      Overrides:
      read in class Reader
      Throws:
      IOException
    • markSupported

      public boolean markSupported()
      Returns true iff the reader supports mark/reset.
      Overrides:
      markSupported in class Reader
    • mark

      public void mark(int value) throws IOException
      Sets a mark allowing a limited number of characters to be "peeked", by reading and then resetting.
      Overrides:
      mark in class Reader
      Parameters:
      value - how many characters may be "peeked".
      Throws:
      IOException
    • reset

      public void reset() throws IOException
      Resets the current position to the last marked position.
      Overrides:
      reset in class Reader
      Throws:
      IOException
    • skip

      public long skip(long value) throws IOException
      Skips a specified number of characters.
      Overrides:
      skip in class Reader
      Throws:
      IOException
    • ready

      public boolean ready() throws IOException
      Returns true iff input characters are known to be ready.
      Overrides:
      ready in class Reader
      Throws:
      IOException
    • close

      public void close() throws IOException
      Closes the reader.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Specified by:
      close in class Reader
      Throws:
      IOException