org.apache.xml.resolver.readers
public class DOMCatalogReader extends Object implements CatalogReader
A DOM-based CatalogReader
This class is used to read XML Catalogs using the DOM. This reader has an advantage over the SAX-based reader that it can analyze the DOM tree rather than simply a series of SAX events. It has the disadvantage that it requires all of the code necessary to build and walk a DOM tree.
Since the choice of CatalogReaders (in the InputStream case) can only be made on the basis of MIME type, the following problem occurs: only one CatalogReader can exist for all XML mime types. In order to get around this problem, the DOMCatalogReader relies on a set of external CatalogParsers to actually build the catalog.
The selection of CatalogParsers is made on the basis of the QName of the root element of the document.
This class requires the Java API for XML Parsing.
Version: 1.0
See Also: Catalog CatalogReader SAXCatalogReader TextCatalogReader
Field Summary | |
---|---|
protected Hashtable | namespaceMap Mapping table from QNames to CatalogParser classes. Each key in this hash table has the form "elementname" or "{namespaceuri}elementname". |
Constructor Summary | |
---|---|
DOMCatalogReader() Null constructor; something for subclasses to call. |
Method Summary | |
---|---|
String | getCatalogParser(String namespaceURI, String rootElement) Get the name of the parser class for a given catalog type. This method returns the parserClass associated with the namespaceURI/rootElement names specified. |
void | readCatalog(Catalog catalog, InputStream is) Read a catalog from an input stream This class reads a catalog from an input stream:
|
void | readCatalog(Catalog catalog, String fileUrl) Read the catalog behind the specified URL. |
void | setCatalogParser(String namespaceURI, String rootElement, String parserClass) Add a new parser to the reader. This method associates the specified parserClass with the namespaceURI/rootElement names specified. |
Mapping table from QNames to CatalogParser classes.
Each key in this hash table has the form "elementname" or "{namespaceuri}elementname". The former is used if the namespace URI is null.
Null constructor; something for subclasses to call.
Get the name of the parser class for a given catalog type.
This method returns the parserClass associated with the namespaceURI/rootElement names specified.
Parameters: namespaceURI The namespace URI. Not the prefix. rootElement The name of the root element.
Returns: The parser class.
Read a catalog from an input stream
This class reads a catalog from an input stream:
Parameters: catalog The catalog for which this reader is called. is The input stream that is to be read.
Throws: IOException if the URL cannot be read. UnknownCatalogFormatException if the catalog format is not recognized. UnparseableCatalogException if the catalog cannot be parsed. (For example, if it is supposed to be XML and isn't well-formed or if the parser class cannot be instantiated.)
Read the catalog behind the specified URL.
Parameters: catalog The catalog for which we are reading. fileUrl The URL of the document that should be read.
Throws: MalformedURLException if the specified URL cannot be turned into a URL object. IOException if the URL cannot be read. UnknownCatalogFormatException if the catalog format is not recognized. UnparseableCatalogException if the catalog cannot be parsed. (For example, if it is supposed to be XML and isn't well-formed.)
Add a new parser to the reader.
This method associates the specified parserClass with the namespaceURI/rootElement names specified.
Parameters: namespaceURI The namespace URI. Not the prefix. rootElement The name of the root element. parserClass The name of the parserClass to instantiate for this kind of catalog.