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]