gnu.xml.aelfred2

Class XmlReader

Implemented Interfaces:
XMLReader

public final class XmlReader
extends Object
implements XMLReader

This SAX2 parser optionally layers a validator over the Ælfred2 SAX2 parser. While this will not evaluate every XML validity constraint, it does support all the validity constraints that are of any real utility outside the strict SGML-compatible world. See the documentation for the SAXDriver class for information about the SAX2 features and properties that are supported, and documentation for the ValidationConsumer for information about what validity constraints may not be supported. (Ælfred2 tests some of those, even in non-validating mode, to achieve better conformance.)

Note that due to its internal construction, you can't change most handlers until parse() returns. This diverges slightly from SAX, which expects later binding to be supported. Early binding involves less runtime overhead, which is an issue for event pipelines as used inside this parser. Rather than relying on the parser to handle late binding to your own handlers, do it yourself.

See Also:
SAXDriver, ValidationConsumer

Constructor Summary

XmlReader()
Constructs a SAX Parser.
XmlReader(boolean invalidIsFatal)
Constructs a SAX Parser, optionally treating validity errors as if they were fatal errors.

Method Summary

ContentHandler
getContentHandler()
SAX2: Returns the object used to report the logical content of an XML document.
DTDHandler
getDTDHandler()
SAX2: Returns the object used to process declarations related to notations and unparsed entities.
EntityResolver
getEntityResolver()
SAX2: Returns the object used when resolving external entities during parsing (both general and parameter entities).
ErrorHandler
getErrorHandler()
SAX2: Returns the object used to receive callbacks for XML errors of all levels (fatal, nonfatal, warning); this is never null;
boolean
getFeature(String featureId)
SAX2: Tells whether this parser supports the specified feature.
Object
getProperty(String propertyId)
SAX2: Returns the specified property.
void
parse(String systemId)
SAX1: Preferred API to parse an XML document, using a system identifier (URI).
void
parse(InputSource source)
SAX1: Underlying API to parse an XML document, used directly when no URI is available.
void
setContentHandler(ContentHandler handler)
SAX2: Assigns the object used to report the logical content of an XML document.
void
setDTDHandler(DTDHandler handler)
SAX1 Assigns DTD handler
void
setEntityResolver(EntityResolver handler)
SAX1 Assigns parser's entity resolver
void
setErrorHandler(ErrorHandler handler)
SAX1 Assigns error handler
void
setFeature(String featureId, boolean state)
SAX2: Sets the state of features supported in this parser.
void
setLocale(Locale locale)
SAX1: Sets the locale used for diagnostics; currently, only locales using the English language are supported.
void
setProperty(String propertyId, Object value)
SAX2: Assigns the specified property.

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

XmlReader

public XmlReader()
Constructs a SAX Parser.

XmlReader

public XmlReader(boolean invalidIsFatal)
Constructs a SAX Parser, optionally treating validity errors as if they were fatal errors.

Method Details

getContentHandler

public ContentHandler getContentHandler()
SAX2: Returns the object used to report the logical content of an XML document.
Specified by:
getContentHandler in interface XMLReader

getDTDHandler

public DTDHandler getDTDHandler()
SAX2: Returns the object used to process declarations related to notations and unparsed entities.
Specified by:
getDTDHandler in interface XMLReader

getEntityResolver

public EntityResolver getEntityResolver()
SAX2: Returns the object used when resolving external entities during parsing (both general and parameter entities).
Specified by:
getEntityResolver in interface XMLReader

getErrorHandler

public ErrorHandler getErrorHandler()
SAX2: Returns the object used to receive callbacks for XML errors of all levels (fatal, nonfatal, warning); this is never null;
Specified by:
getErrorHandler in interface XMLReader

getFeature

public boolean getFeature(String featureId)
            throws SAXNotRecognizedException,
                   SAXNotSupportedException
SAX2: Tells whether this parser supports the specified feature. At this time, this directly parallels the underlying SAXDriver, except that validation is optionally supported.
Specified by:
getFeature in interface XMLReader
See Also:
SAXDriver

getProperty

public Object getProperty(String propertyId)
            throws SAXNotRecognizedException
SAX2: Returns the specified property.
Specified by:
getProperty in interface XMLReader

parse

public void parse(String systemId)
            throws SAXException,
                   IOException
SAX1: Preferred API to parse an XML document, using a system identifier (URI).
Specified by:
parse in interface XMLReader

parse

public void parse(InputSource source)
            throws SAXException,
                   IOException
SAX1: Underlying API to parse an XML document, used directly when no URI is available. When this is invoked, and the parser is set to validate, some features will be automatically reset to appropriate values: for reporting namespace prefixes, and incorporating external entities.
Specified by:
parse in interface XMLReader
Parameters:
source - The XML input source.
Throws:
IllegalStateException - if called mid-parse
SAXException - The handlers may throw any SAXException, and the parser normally throws SAXParseException objects.
IOException - IOExceptions are normally through through the parser if there are problems reading the source document.

setContentHandler

public void setContentHandler(ContentHandler handler)
SAX2: Assigns the object used to report the logical content of an XML document.
Specified by:
setContentHandler in interface XMLReader
Throws:
IllegalStateException - if called mid-parse

setDTDHandler

public void setDTDHandler(DTDHandler handler)
SAX1 Assigns DTD handler
Specified by:
setDTDHandler in interface XMLReader
Throws:
IllegalStateException - if called mid-parse

setEntityResolver

public void setEntityResolver(EntityResolver handler)
SAX1 Assigns parser's entity resolver
Specified by:
setEntityResolver in interface XMLReader

setErrorHandler

public void setErrorHandler(ErrorHandler handler)
SAX1 Assigns error handler
Specified by:
setErrorHandler in interface XMLReader
Throws:
IllegalStateException - if called mid-parse

setFeature

public void setFeature(String featureId,
                       boolean state)
            throws SAXNotRecognizedException,
                   SAXNotSupportedException
SAX2: Sets the state of features supported in this parser. Note that this parser requires reporting of namespace prefixes when validating.
Specified by:
setFeature in interface XMLReader

setLocale

public void setLocale(Locale locale)
            throws SAXException
SAX1: Sets the locale used for diagnostics; currently, only locales using the English language are supported.
Parameters:
locale - The locale for which diagnostics will be generated

setProperty

public void setProperty(String propertyId,
                        Object value)
            throws SAXNotRecognizedException,
                   SAXNotSupportedException
SAX2: Assigns the specified property.
Specified by:
setProperty in interface XMLReader
Throws:
IllegalStateException - if called mid-parse

XmlReader.java -- Copyright (C) 1999,2000,2001 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.