Return the XMLReader to be used for parsing the input document. FIX ME: there is a bug in JAXP/XERCES that prevent the use of a parser that contains a schema with a DTD. @return the XML reader @exception SAXException if no XMLReader can be instantiated
()
| 960 | * @exception SAXException if no XMLReader can be instantiated |
| 961 | */ |
| 962 | public XMLReader getXMLReader() throws SAXException { |
| 963 | if (reader == null) { |
| 964 | reader = getParser().getXMLReader(); |
| 965 | } |
| 966 | |
| 967 | reader.setDTDHandler(this); |
| 968 | reader.setContentHandler(this); |
| 969 | |
| 970 | EntityResolver entityResolver = getEntityResolver(); |
| 971 | if (entityResolver == null) { |
| 972 | entityResolver = this; |
| 973 | } |
| 974 | |
| 975 | // Wrap the resolver so we can perform ${...} property replacement |
| 976 | if (entityResolver instanceof EntityResolver2) { |
| 977 | entityResolver = new EntityResolver2Wrapper((EntityResolver2) entityResolver, source, classLoader); |
| 978 | } else { |
| 979 | entityResolver = new EntityResolverWrapper(entityResolver, source, classLoader); |
| 980 | } |
| 981 | |
| 982 | reader.setEntityResolver(entityResolver); |
| 983 | |
| 984 | reader.setProperty("http://xml.org/sax/properties/lexical-handler", this); |
| 985 | |
| 986 | reader.setErrorHandler(this); |
| 987 | return reader; |
| 988 | } |
| 989 | |
| 990 | // ------------------------------------------------- ContentHandler Methods |
| 991 |