Package net.n3.nanoxml
Class StdXMLReader
- java.lang.Object
-
- net.n3.nanoxml.StdXMLReader
-
- All Implemented Interfaces:
IXMLReader
public class StdXMLReader extends Object implements IXMLReader
StdXMLReader reads the data to be parsed.- Version:
- $Name: RELEASE_2_2_1 $, $Revision: 1.4 $
- Author:
- Marc De Scheemaecker
-
-
Constructor Summary
Constructors Constructor Description StdXMLReader(InputStream stream)
Initializes the XML reader.StdXMLReader(Reader reader)
Initializes the XML reader.StdXMLReader(String publicID, String systemID)
Initializes the reader from a system and public ID.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
atEOF()
Returns true if there are no more characters left to be read.boolean
atEOFOfCurrentStream()
Returns true if the current stream has no more characters left to be read.static IXMLReader
fileReader(String filename)
Creates a new reader using a file as input.protected void
finalize()
Cleans up the object when it's destroyed.protected String
getEncoding(String str)
Scans the encoding from an <?xml...?> tag.int
getLineNr()
Returns the line number of the data in the current stream.String
getPublicID()
Returns the current public ID.int
getStreamLevel()
Returns the current "level" of the stream on the stack of streams.String
getSystemID()
Returns the current system ID.Reader
openStream(String publicID, String systemID)
Opens a stream from a public and system ID.char
read()
Reads a character.void
setPublicID(String publicID)
Sets the public ID of the current stream.void
setSystemID(String systemID)
Sets the system ID of the current stream.void
startNewStream(Reader reader)
Starts a new stream from a Java reader.void
startNewStream(Reader reader, boolean isInternalEntity)
Starts a new stream from a Java reader.protected Reader
stream2reader(InputStream stream, StringBuffer charsRead)
Converts a stream to a reader while detecting the encoding.static IXMLReader
stringReader(String str)
Creates a new reader using a string as input.void
unread(char ch)
Pushes the last character read back to the stream.
-
-
-
Constructor Detail
-
StdXMLReader
public StdXMLReader(String publicID, String systemID) throws MalformedURLException, FileNotFoundException, IOException
Initializes the reader from a system and public ID.- Parameters:
publicID
- the public ID which may be null.systemID
- the non-null system ID.- Throws:
MalformedURLException
- if the system ID does not contain a valid URLFileNotFoundException
- if the system ID refers to a local file which does not existIOException
- if an error occurred opening the stream
-
StdXMLReader
public StdXMLReader(Reader reader)
Initializes the XML reader.- Parameters:
reader
- the input for the XML data.
-
StdXMLReader
public StdXMLReader(InputStream stream) throws IOException
Initializes the XML reader.- Parameters:
stream
- the input for the XML data.- Throws:
IOException
- if an I/O error occurred
-
-
Method Detail
-
stringReader
public static IXMLReader stringReader(String str)
Creates a new reader using a string as input.- Parameters:
str
- the string containing the XML data
-
fileReader
public static IXMLReader fileReader(String filename) throws FileNotFoundException, IOException
Creates a new reader using a file as input.- Parameters:
filename
- the name of the file containing the XML data- Throws:
FileNotFoundException
- if the file could not be foundIOException
- if an I/O error occurred
-
finalize
protected void finalize() throws Throwable
Cleans up the object when it's destroyed.
-
getEncoding
protected String getEncoding(String str)
Scans the encoding from an <?xml...?> tag.- Parameters:
str
- the first tag in the XML data.- Returns:
- the encoding, or null if no encoding has been specified.
-
stream2reader
protected Reader stream2reader(InputStream stream, StringBuffer charsRead) throws IOException
Converts a stream to a reader while detecting the encoding.- Parameters:
stream
- the input for the XML data.charsRead
- buffer where to put characters that have been read- Throws:
IOException
- if an I/O error occurred
-
read
public char read() throws IOException
Reads a character.- Specified by:
read
in interfaceIXMLReader
- Returns:
- the character
- Throws:
IOException
- if no character could be read
-
atEOFOfCurrentStream
public boolean atEOFOfCurrentStream() throws IOException
Returns true if the current stream has no more characters left to be read.- Specified by:
atEOFOfCurrentStream
in interfaceIXMLReader
- Throws:
IOException
- if an I/O error occurred
-
atEOF
public boolean atEOF() throws IOException
Returns true if there are no more characters left to be read.- Specified by:
atEOF
in interfaceIXMLReader
- Throws:
IOException
- if an I/O error occurred
-
unread
public void unread(char ch) throws IOException
Pushes the last character read back to the stream.- Specified by:
unread
in interfaceIXMLReader
- Parameters:
ch
- the character to push back.- Throws:
IOException
- if an I/O error occurred
-
openStream
public Reader openStream(String publicID, String systemID) throws MalformedURLException, FileNotFoundException, IOException
Opens a stream from a public and system ID.- Specified by:
openStream
in interfaceIXMLReader
- Parameters:
publicID
- the public ID, which may be nullsystemID
- the system ID, which is never null- Throws:
MalformedURLException
- if the system ID does not contain a valid URLFileNotFoundException
- if the system ID refers to a local file which does not existIOException
- if an error occurred opening the stream
-
startNewStream
public void startNewStream(Reader reader)
Starts a new stream from a Java reader. The new stream is used temporary to read data from. If that stream is exhausted, control returns to the parent stream.- Specified by:
startNewStream
in interfaceIXMLReader
- Parameters:
reader
- the non-null reader to read the new data from
-
startNewStream
public void startNewStream(Reader reader, boolean isInternalEntity)
Starts a new stream from a Java reader. The new stream is used temporary to read data from. If that stream is exhausted, control returns to the parent stream.- Specified by:
startNewStream
in interfaceIXMLReader
- Parameters:
reader
- the non-null reader to read the new data fromisInternalEntity
- true if the reader is produced by resolving an internal entity
-
getStreamLevel
public int getStreamLevel()
Returns the current "level" of the stream on the stack of streams.- Specified by:
getStreamLevel
in interfaceIXMLReader
-
getLineNr
public int getLineNr()
Returns the line number of the data in the current stream.- Specified by:
getLineNr
in interfaceIXMLReader
-
setSystemID
public void setSystemID(String systemID) throws MalformedURLException
Sets the system ID of the current stream.- Specified by:
setSystemID
in interfaceIXMLReader
- Parameters:
systemID
- the system ID- Throws:
MalformedURLException
- if the system ID does not contain a valid URL
-
setPublicID
public void setPublicID(String publicID)
Sets the public ID of the current stream.- Specified by:
setPublicID
in interfaceIXMLReader
- Parameters:
publicID
- the public ID
-
getSystemID
public String getSystemID()
Returns the current system ID.- Specified by:
getSystemID
in interfaceIXMLReader
-
getPublicID
public String getPublicID()
Returns the current public ID.- Specified by:
getPublicID
in interfaceIXMLReader
-
-