dleslie 02/01/22 10:24:53
Modified: src/org/apache/stylebook/parsers XercesParser.java
Log:
Use JAXP DocumentBuilder to parse XML documents and return a
Document.
Revision Changes Path
1.8 +31 -36 xml-stylebook/src/org/apache/stylebook/parsers/XercesParser.java
Index: XercesParser.java
===================================================================
RCS file:
/home/cvs/xml-stylebook/src/org/apache/stylebook/parsers/XercesParser.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- XercesParser.java 16 Jan 2002 15:59:05 -0000 1.7
+++ XercesParser.java 22 Jan 2002 18:24:53 -0000 1.8
@@ -12,20 +12,17 @@
import org.apache.stylebook.Parser;
import org.apache.stylebook.CreationException;
import org.apache.xerces.dom.DocumentImpl;
-import org.apache.xerces.parsers.DOMParser;
+
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
+import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.w3c.dom.Document;
-// Imported TraX classes
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.sax.SAXSource;
-import javax.xml.transform.dom.DOMResult;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.ParserConfigurationException;
/**
*
@@ -33,18 +30,20 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a>
* @author Copyright 1999 © <a href="http://www.apache.org">The Apache
* Software Foundation</a>. All rights reserved.
- * @version CVS $Revision: 1.7 $ $Date: 2002/01/16 15:59:05 $
+ * @version CVS $Revision: 1.8 $ $Date: 2002/01/22 18:24:53 $
*/
public class XercesParser extends AbstractParser implements Parser,ErrorHandler {
- TransformerFactory tFactory;
-
+ DocumentBuilderFactory docFactory;
+
/**
- * Instantiate a TrasformerFactory to produce Transformers for identity
transformations
- * (to get around a Xerces-J2 problem parsing the input from a URL with the sbk:
protocol).
+ * Instantiate a DocumentBuilderFactory.
*/
- public XercesParser(){
- tFactory = TransformerFactory.newInstance();
- }
+ public XercesParser()
+ {
+ docFactory = DocumentBuilderFactory.newInstance();
+ docFactory.setNamespaceAware(true);
+ docFactory.setExpandEntityReferences(true);
+ }
/**
@@ -60,28 +59,24 @@
throws IOException, CreationException {
this.debug("Parsing \""+in.getSystemId()+"\"");
try {
-/* replaced with the identity transform that follows -- Don Leslie 1/16/2002
- DOMParser p=new DOMParser();
-
p.setFeature("http://apache.org/xml/features/dom/create-entity-ref-nodes",false);
- p.setFeature("http://apache.org/xml/features/validation/dynamic",true);
- p.setErrorHandler(this);
- p.parse(in);
- Document document=p.getDocument();
-*/
- Transformer transformer = tFactory.newTransformer();
- DOMResult domres = new DOMResult();
- transformer.transform(new SAXSource(in), domres);
- Document document = (Document)domres.getNode();
-
- if (document==null) {
- throw new CreationException("Cannot retrieve parsed document");
- } else return(document);
- } catch (TransformerConfigurationException e) {
+ DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
+ Document document = docBuilder.parse(in);
+
+ if (document==null) {
+ throw new CreationException("Cannot retrieve parsed document");
+ } else return(document);
+ } catch (IOException e) {
+ this.log(e.getMessage());
+ throw new CreationException("IOException caught while using
DocumentBuilder to parse an XML document.",e);
+ } catch (ParserConfigurationException e) {
+ this.log(e.getMessage());
+ throw new CreationException("ParserConfigurationException caught while
using DocumentBuilder to parse an XML document.",e);
+ } catch (SAXNotRecognizedException e) {
this.log(e.getMessage());
- throw new CreationException("TransformerConfigurationException caught
while performing identity transform.",e);
- } catch (TransformerException e) {
+ throw new CreationException("SAXNotRecognizedException caught while
using DocumentBuilder to parse an XML document.",e);
+ } catch (SAXException e) {
this.log(e.getMessage());
- throw new CreationException("TransformerException caught while
performing identity transform.",e);
+ throw new CreationException("SAXException caught using DocumentBuilder
to parse an XML document.",e);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]