Class StdXMLReader

  • All Implemented Interfaces:
    IXMLReader

    public class StdXMLReader
    extends java.lang.Object
    implements IXMLReader
    StdXMLReader reads the data to be parsed.
    Author:
    Marc De Scheemaecker
    • Constructor Summary

      Constructors 
      Constructor Description
      StdXMLReader​(java.io.InputStream stream)
      Initializes the XML reader.
      StdXMLReader​(java.io.Reader reader)
      Initializes the XML reader.
      StdXMLReader​(java.lang.String publicID, java.lang.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​(java.lang.String filename)
      Creates a new reader using a file as input.
      protected void finalize()
      Cleans up the object when it's destroyed.
      protected java.lang.String getEncoding​(java.lang.String str)
      Scans the encoding from an <?xml...?> tag.
      int getLineNr()
      Returns the line number of the data in the current stream.
      java.lang.String getPublicID()
      Returns the current public ID.
      int getStreamLevel()
      Returns the current "level" of the stream on the stack of streams.
      java.lang.String getSystemID()
      Returns the current system ID.
      java.io.Reader openStream​(java.lang.String publicID, java.lang.String systemID)
      Opens a stream from a public and system ID.
      char read()
      Reads a character.
      void setPublicID​(java.lang.String publicID)
      Sets the public ID of the current stream.
      void setSystemID​(java.lang.String systemID)
      Sets the system ID of the current stream.
      void startNewStream​(java.io.Reader reader)
      Starts a new stream from a Java reader.
      void startNewStream​(java.io.Reader reader, boolean isInternalEntity)
      Starts a new stream from a Java reader.
      protected java.io.Reader stream2reader​(java.io.InputStream stream, java.lang.StringBuffer charsRead)
      Converts a stream to a reader while detecting the encoding.
      static IXMLReader stringReader​(java.lang.String str)
      Creates a new reader using a string as input.
      void unread​(char ch)
      Pushes the last character read back to the stream.
      • Methods inherited from class java.lang.Object

        clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • StdXMLReader

        public StdXMLReader​(java.lang.String publicID,
                            java.lang.String systemID)
                     throws java.net.MalformedURLException,
                            java.io.FileNotFoundException,
                            java.io.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:
        java.net.MalformedURLException - if the system ID does not contain a valid URL
        java.io.FileNotFoundException - if the system ID refers to a local file which does not exist
        java.io.IOException - if an error occurred opening the stream
      • StdXMLReader

        public StdXMLReader​(java.io.Reader reader)
        Initializes the XML reader.
        Parameters:
        reader - the input for the XML data.
      • StdXMLReader

        public StdXMLReader​(java.io.InputStream stream)
                     throws java.io.IOException
        Initializes the XML reader.
        Parameters:
        stream - the input for the XML data.
        Throws:
        java.io.IOException - if an I/O error occurred
    • Method Detail

      • stringReader

        public static IXMLReader stringReader​(java.lang.String str)
        Creates a new reader using a string as input.
        Parameters:
        str - the string containing the XML data
      • fileReader

        public static IXMLReader fileReader​(java.lang.String filename)
                                     throws java.io.FileNotFoundException,
                                            java.io.IOException
        Creates a new reader using a file as input.
        Parameters:
        filename - the name of the file containing the XML data
        Throws:
        java.io.FileNotFoundException - if the file could not be found
        java.io.IOException - if an I/O error occurred
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        Cleans up the object when it's destroyed.
        Overrides:
        finalize in class java.lang.Object
        Throws:
        java.lang.Throwable
      • getEncoding

        protected java.lang.String getEncoding​(java.lang.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 java.io.Reader stream2reader​(java.io.InputStream stream,
                                               java.lang.StringBuffer charsRead)
                                        throws java.io.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:
        java.io.IOException - if an I/O error occurred
      • read

        public char read()
                  throws java.io.IOException
        Reads a character.
        Specified by:
        read in interface IXMLReader
        Returns:
        the character
        Throws:
        java.io.IOException - if no character could be read
      • atEOFOfCurrentStream

        public boolean atEOFOfCurrentStream()
                                     throws java.io.IOException
        Returns true if the current stream has no more characters left to be read.
        Specified by:
        atEOFOfCurrentStream in interface IXMLReader
        Throws:
        java.io.IOException - if an I/O error occurred
      • atEOF

        public boolean atEOF()
                      throws java.io.IOException
        Returns true if there are no more characters left to be read.
        Specified by:
        atEOF in interface IXMLReader
        Throws:
        java.io.IOException - if an I/O error occurred
      • unread

        public void unread​(char ch)
                    throws java.io.IOException
        Pushes the last character read back to the stream.
        Specified by:
        unread in interface IXMLReader
        Parameters:
        ch - the character to push back.
        Throws:
        java.io.IOException - if an I/O error occurred
      • openStream

        public java.io.Reader openStream​(java.lang.String publicID,
                                         java.lang.String systemID)
                                  throws java.net.MalformedURLException,
                                         java.io.FileNotFoundException,
                                         java.io.IOException
        Opens a stream from a public and system ID.
        Specified by:
        openStream in interface IXMLReader
        Parameters:
        publicID - the public ID, which may be null
        systemID - the system ID, which is never null
        Throws:
        java.net.MalformedURLException - if the system ID does not contain a valid URL
        java.io.FileNotFoundException - if the system ID refers to a local file which does not exist
        java.io.IOException - if an error occurred opening the stream
      • startNewStream

        public void startNewStream​(java.io.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 interface IXMLReader
        Parameters:
        reader - the non-null reader to read the new data from
      • startNewStream

        public void startNewStream​(java.io.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 interface IXMLReader
        Parameters:
        reader - the non-null reader to read the new data from
        isInternalEntity - 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 interface IXMLReader
      • getLineNr

        public int getLineNr()
        Returns the line number of the data in the current stream.
        Specified by:
        getLineNr in interface IXMLReader
      • setSystemID

        public void setSystemID​(java.lang.String systemID)
                         throws java.net.MalformedURLException
        Sets the system ID of the current stream.
        Specified by:
        setSystemID in interface IXMLReader
        Parameters:
        systemID - the system ID
        Throws:
        java.net.MalformedURLException - if the system ID does not contain a valid URL
      • setPublicID

        public void setPublicID​(java.lang.String publicID)
        Sets the public ID of the current stream.
        Specified by:
        setPublicID in interface IXMLReader
        Parameters:
        publicID - the public ID
      • getSystemID

        public java.lang.String getSystemID()
        Returns the current system ID.
        Specified by:
        getSystemID in interface IXMLReader
      • getPublicID

        public java.lang.String getPublicID()
        Returns the current public ID.
        Specified by:
        getPublicID in interface IXMLReader