Class SaxParser


  • public class SaxParser
    extends Base
    A simple XML parser. The public interface consists of nearly identical methods: parseXml(...) which produce a tree of SimpleElement objects
    Author:
    gg 2000.10.23
    • Constructor Detail

      • SaxParser

        public SaxParser()
        Construct a SaxParser.
      • SaxParser

        public SaxParser​(boolean fAllowComments)
        Construct a SaxParser.
        Parameters:
        fAllowComments - if true, the resulting tree may contain the XMLValue nodes that contain comments; otherwize all comments are ignored
    • Method Detail

      • main

        public static void main​(String[] asParam)
        Unit test: create a simple parser, parse and output the result.
        Parameters:
        asParam - an array of parameters
      • parseXml

        public XmlElement parseXml​(String sXml)
                            throws SAXException
        Parse the specified String into a tree of XmlElement objects ignoring any XML nodes other than elements, text or comments (in a case of SaxParser that allows comments). In addition, the text value is trimmed for all nodes except leafs.
        Parameters:
        sXml - the XML as string
        Returns:
        the generated XmlElement
        Throws:
        SAXException - if SAX error occurs
      • parseXml

        public XmlElement parseXml​(String sXml,
                                   XmlElement elRoot)
                            throws SAXException
        Parse the specified String into a tree of XmlElement objects (same as above) having the specified [empty] XmlElement a root. Note: this method is used by de-serialization (see SimpleElement#readExternal)
        Parameters:
        sXml - the XML as string
        elRoot - the XML root
        Returns:
        the generated XmlElement
        Throws:
        SAXException - if SAX error occurs
      • parseXml

        public XmlElement parseXml​(InputStream input)
                            throws SAXException
        Parse the specified InputStream into a tree of XmlElement objects ignoring any XML nodes other than elements, text or comments (in a case of SaxParser that allows comments). In addition, the text value is trimmed for all nodes except leafs.
        Parameters:
        input - the InputStream
        Returns:
        the generated XmlElement
        Throws:
        SAXException - if SAX error occurs
      • parseXml

        public XmlElement parseXml​(Reader input)
                            throws SAXException
        Parse the specified Reader into a tree of XmlElement objects ignoring any XML nodes other than elements, text or comments (in a case of SaxParser that allows comments). In addition, the text value is trimmed for all nodes except leafs.
        Parameters:
        input - the input Reader
        Returns:
        the generated XmlElement
        Throws:
        SAXException - if SAX error occurs
      • parseXml

        public XmlElement parseXml​(InputSource input)
                            throws SAXException
        Parse the specified InputSource into a tree of XmlElement objects ignoring any XML nodes other than elements, text or comments (in a case of SaxParser that allows comments). In addition, the text value is trimmed for all nodes except leafs.
        Parameters:
        input - the InputSource
        Returns:
        the generated XmlElement
        Throws:
        SAXException - if SAX error occurs
      • validateXsd

        public void validateXsd​(String sXml,
                                XmlDocument xml)
                         throws SAXException,
                                IOException,
                                ParserConfigurationException
        XSD aware parsing routine; if XML contains an XSD reference to a schemeLocation/noNamespaceSchemaLocation then parse XML using provided XSD for validation.
        Parameters:
        sXml - the XML to parse (as a string)
        xml - the XML document object used to obtain schema locations
        Throws:
        SAXException - if XML contains an XSD reference and does not pass validation
        IOException - if XML contains a schema that cannot be loaded
        ParserConfigurationException - if a parser cannot be created
      • resolveSchemaSources

        protected Source[] resolveSchemaSources​(List<String> listUri)
                                         throws IOException
        For a given set of XSD URIs, return the Sources to be used by the XML parser to validate an XML document.
        Parameters:
        listUri - list of XSD URIs to convert
        Returns:
        an array of Sources to be used by the XML parser
        Throws:
        IOException - if the resource cannot be located or loaded
      • instantiateRoot

        protected XmlElement instantiateRoot​(String sRoot)
        Instantiate an XmlElement implementation for a root element.
        Parameters:
        sRoot - root name
        Returns:
        a new XmlElement to be used as the root element
      • getParser

        protected static Parser getParser()
                                   throws Exception
        Get an instance of non-validating SAX parser.
        Returns:
        a SAX parser
        Throws:
        Exception - if an error occurs