|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object java.io.Reader org.apache.crimson.parser.XmlReader
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.
Nested Class Summary | |
(package private) static class |
XmlReader.AsciiReader
|
(package private) static class |
XmlReader.BaseReader
|
(package private) static class |
XmlReader.Iso8859_1Reader
|
(package private) static class |
XmlReader.Utf8Reader
|
Field Summary | |
private String |
assignedEncoding
|
private static Hashtable |
charsets
|
private boolean |
closed
|
private Reader |
in
|
private static int |
MAXPUSHBACK
|
Fields inherited from class java.io.Reader |
lock |
Constructor Summary | |
private |
XmlReader(InputStream stream)
|
Method Summary | |
void |
close()
Closes the reader. |
static Reader |
createReader(InputStream in)
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 |
createReader(InputStream in,
String encoding)
Creates a reader supporting the given encoding, mapping from standard encoding names to ones that understood by Java where necessary. |
String |
getEncoding()
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 |
markSupported()
Returns true iff the reader supports mark/reset. |
int |
read()
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 |
ready()
Returns true iff input characters are known to be ready. |
void |
reset()
Resets the current position to the last marked position. |
private void |
setEncoding(InputStream stream,
String encoding)
|
long |
skip(long value)
Skips a specified number of characters. |
private static String |
std2java(String encoding)
|
private void |
useEncodingDecl(PushbackInputStream pb,
String encoding)
|
Methods inherited from class java.io.Reader |
read |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
private static final int MAXPUSHBACK
private Reader in
private String assignedEncoding
private boolean closed
private static final Hashtable charsets
Constructor Detail |
private XmlReader(InputStream stream) throws IOException
Method Detail |
public static Reader createReader(InputStream in) throws IOException
in
- the input stream from which the reader is constructed
IOException
- on error, such as unrecognized encodingpublic static Reader createReader(InputStream in, String encoding) throws IOException
in
- the input stream from which the reader is constructedencoding
- the IETF standard name of the encoding to use;
if null, autodetection is used.
IOException
- on error, including unrecognized encodingprivate static String std2java(String encoding)
public String getEncoding()
private void useEncodingDecl(PushbackInputStream pb, String encoding) throws IOException
IOException
private void setEncoding(InputStream stream, String encoding) throws IOException
IOException
public int read(char[] buf, int off, int len) throws IOException
read
in class Reader
buf
- Destination bufferoff
- Offset at which to start storing characterslen
- Maximum number of characters to read
IOException
- If an I/O error occurspublic int read() throws IOException
read
in class Reader
IOException
- If an I/O error occurspublic boolean markSupported()
markSupported
in class Reader
public void mark(int value) throws IOException
mark
in class Reader
value
- how many characters may be "peeked".
IOException
- If the stream does not support mark(),
or if some other I/O error occurspublic void reset() throws IOException
reset
in class Reader
IOException
- If the stream has not been marked,
or if the mark has been invalidated,
or if the stream does not support reset(),
or if some other I/O error occurspublic long skip(long value) throws IOException
skip
in class Reader
value
- The number of characters to skip
IOException
- If an I/O error occurspublic boolean ready() throws IOException
ready
in class Reader
IOException
- If an I/O error occurspublic void close() throws IOException
close
in class Reader
IOException
- If an I/O error occurs
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |