Class SimpleParser

java.lang.Object
com.tangosol.util.Base
com.tangosol.run.xml.SimpleParser

public class SimpleParser extends Base
This class uses the XmlTokenizer to produce an XmlDocument from XML text.
Version:
1.00, 2001.07.16
Author:
Cameron Purdy
  • Field Details

    • m_fValidate

      protected final boolean m_fValidate
      If true, validate XML if it contains an XSD reference
    • m_toker

      protected com.tangosol.run.xml.XmlTokenizer m_toker
      The lexical tokenizer.
    • m_token

      protected com.tangosol.run.xml.XmlToken m_token
      The "current" token being evaluated.
  • Constructor Details

    • SimpleParser

      public SimpleParser()
      Construct an XML SimpleParser. If the XML contains an XSD reference, the parser will validate using the provided XSD.
    • SimpleParser

      public SimpleParser(boolean fValidate)
      Construct an XML SimpleParser.
      Parameters:
      fValidate - if true, validate XML if it contains an XSD reference
  • Method Details

    • init

      protected void init()
      Internal initialization.
    • parseXml

      public XmlDocument parseXml(String sXml) throws IOException
      Parse the specified String into an XmlDocument object.
      Parameters:
      sXml - the String to parse
      Returns:
      an XmlDocument object
      Throws:
      IOException - if I/O error occurs
    • parseXml

      public XmlDocument parseXml(Reader reader) throws IOException
      Parse the specified Reader into an XmlDocument object.
      Parameters:
      reader - the Reader object
      Returns:
      an XmlDocument object
      Throws:
      IOException - if I/O error occurs
    • parseXml

      public XmlDocument parseXml(InputStream stream) throws IOException
      Parse the specified InputStream into an XmlDocument object.
      Parameters:
      stream - the InputStream object
      Returns:
      an XmlDocument object
      Throws:
      IOException - if I/O error occurs
    • parseXml

      public XmlDocument parseXml(InputStream stream, String sCharset) throws IOException
      Parse the specified InputStream into an XmlDocument object using the specified charset.
      Parameters:
      stream - the InputStream object
      sCharset - the charset name
      Returns:
      an XmlDocument object
      Throws:
      IOException - if I/O error occurs
    • parseXml

      public XmlDocument parseXml(String sXml, XmlDocument xml) throws IOException
      Parse the passed script.
      Parameters:
      sXml - the script to parse (as a string)
      xml - the XML document object to parse into
      Returns:
      the XmlDocument object
      Throws:
      IOException - if I/O error occurs
    • instantiateDocument

      protected XmlDocument instantiateDocument()
      Factory method to instantiate an XmlDocument implementation.
      Returns:
      an object implementing XmlDocument
    • main

      public static void main(String[] asArgs)
      Unit test.
      Parameters:
      asArgs - the string array arguments
    • parseDocument

      protected void parseDocument(XmlDocument xml) throws com.tangosol.dev.compiler.CompilerException
      Factory method to instantiate an XmlDocument implementation.
      Parameters:
      xml - a blank XmlDocument
      Throws:
      com.tangosol.dev.compiler.CompilerException - if compiler error occurs
    • parsePi

      protected void parsePi(XmlElement xml) throws com.tangosol.dev.compiler.CompilerException
      Parse <?xml.
      Parameters:
      xml - the XML element
      Throws:
      com.tangosol.dev.compiler.CompilerException - if compiler error occurs
    • parsePi

      protected void parsePi(XmlElement xml, boolean fXmlDeclAllowed) throws com.tangosol.dev.compiler.CompilerException
      Parse <?xml.
      Parameters:
      xml - the XML element
      fXmlDeclAllowed - whether XML declaration is allowed
      Throws:
      com.tangosol.dev.compiler.CompilerException - if compiler error occurs
    • parseXmlDecl

      protected void parseXmlDecl(XmlDocument xml) throws com.tangosol.dev.compiler.CompilerException
      Parse XML declaration.
      Parameters:
      xml - the XML document
      Throws:
      com.tangosol.dev.compiler.CompilerException - if compiler error occurs
    • parseDoctype

      protected void parseDoctype(XmlDocument xml) throws com.tangosol.dev.compiler.CompilerException
      Parse doc type.
      Parameters:
      xml - the XML document
      Throws:
      com.tangosol.dev.compiler.CompilerException - if compiler error occurs
    • parseElement

      protected void parseElement(XmlElement xml) throws com.tangosol.dev.compiler.CompilerException
      Note: '<' and element name have already been parsed
      Parameters:
      xml - the XML element
      Throws:
      com.tangosol.dev.compiler.CompilerException - if compiler error occurs
    • parseMisc

      protected void parseMisc(XmlElement xml) throws com.tangosol.dev.compiler.CompilerException
      Parse comments / other PIs.
      Parameters:
      xml - the XML element
      Throws:
      com.tangosol.dev.compiler.CompilerException - if compiler error occurs
    • parseComment

      protected void parseComment(XmlElement xml) throws com.tangosol.dev.compiler.CompilerException
      Parse comments.
      Parameters:
      xml - the XML element
      Throws:
      com.tangosol.dev.compiler.CompilerException - if compiler error occurs
    • parseComment

      protected void parseComment(XmlElement xml, boolean fIsDocument) throws com.tangosol.dev.compiler.CompilerException
      Parse comments.
      Parameters:
      xml - the XML element
      fIsDocument - whether the passed in XmlElement is an XmlDocument
      Throws:
      com.tangosol.dev.compiler.CompilerException - if compiler error occurs
    • hasCurrent

      protected boolean hasCurrent()
      Determine if there is a current token.
      Returns:
      true if there is a current token
    • current

      protected com.tangosol.run.xml.XmlToken current() throws com.tangosol.dev.compiler.CompilerException
      Returns the current token and advances to the next token.
      Returns:
      the current token
      Throws:
      com.tangosol.dev.compiler.CompilerException - potentially thrown by the tokenizer
    • hasNext

      protected boolean hasNext()
      Determine if there is a next token.
      Returns:
      true if there is a next token
    • next

      protected com.tangosol.run.xml.XmlToken next() throws com.tangosol.dev.compiler.CompilerException
      Advances to and returns the next token.
      Returns:
      the next token
      Throws:
      com.tangosol.dev.compiler.CompilerException - potentially thrown by the tokenizer
    • match

      protected com.tangosol.run.xml.XmlToken match(int id) throws com.tangosol.dev.compiler.CompilerException
      Verifies that the current token matches the passed token id and, if so, advances to the next token. Otherwise, a syntax exception is thrown.
      Parameters:
      id - the token id to match
      Returns:
      the current token
      Throws:
      com.tangosol.dev.compiler.SyntaxException - thrown if the token does not match
      com.tangosol.dev.compiler.CompilerException - potentially thrown by the tokenizer
    • match

      protected com.tangosol.run.xml.XmlToken match(String sName) throws com.tangosol.dev.compiler.CompilerException
      Verifies that the current token is a name token whose name matches the passed String and, if so, advances to the next token. Otherwise, a syntax exception is thrown.
      Parameters:
      sName - the name token text to match
      Returns:
      the matched token
      Throws:
      com.tangosol.dev.compiler.SyntaxException - thrown if the token does not match
      com.tangosol.dev.compiler.CompilerException - potentially thrown by the tokenizer
    • peek

      protected com.tangosol.run.xml.XmlToken peek(int id) throws com.tangosol.dev.compiler.CompilerException
      Tests if the current token matches the passed token id and, if so, advances to the next token.
      Parameters:
      id - the token id to peek for
      Returns:
      the current token, if matched, or null
      Throws:
      com.tangosol.dev.compiler.CompilerException - potentially thrown by the tokenizer
    • peek

      protected com.tangosol.run.xml.XmlToken peek(int cat, int subcat) throws com.tangosol.dev.compiler.CompilerException
      Tests if the current token matches the passed token category and sub-category. If so, it returns the current token and advances to the next token.
      Parameters:
      cat - the category to peek for
      subcat - the sub-category to peek for
      Returns:
      the current token, if matched, or null
      Throws:
      com.tangosol.dev.compiler.CompilerException - potentially thrown by the tokenizer
    • peek

      protected com.tangosol.run.xml.XmlToken peek(String sName) throws com.tangosol.dev.compiler.CompilerException
      Tests if the current token is a name that matches the passed String and, if so, advances to the next token.
      Parameters:
      sName - the name token text to peek for
      Returns:
      id the current token, if matched, or null
      Throws:
      com.tangosol.dev.compiler.CompilerException - potentially thrown by the tokenizer
    • mark

      protected com.tangosol.run.xml.XmlToken mark()
      Marks the current position and returns it as a token.
      Returns:
      the current token
    • skipBOM

      protected InputStream skipBOM(InputStream in) throws IOException
      Read the provided InputStream to determine if the stream starts with a UTF-8 BOM (http://www.unicode.org/faq/utf_bom.html#BOM). If the BOM is present, advance the stream to skip it.

      This is a workaround for the inability of the Java UTF-8 encoding to recognize the UTF-8 BOM (http://bugs.sun.com/view_bug.do?bug_id=4508058).

      Parameters:
      in - InputStream to check for BOM
      Returns:
      an InputStream with the UTF-8 BOM skipped
      Throws:
      IOException - if I/O error occurs