/*
* JAXPDomParser.java
*
* Created on March 30, 2002, 11:51 PM
*/
package jas.util.xml.parserwrappers;
import jas.util.xml.JASDOMParser;
import java.io.IOException;
import java.io.Reader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
/**
*
* @author tonyj
*/
public class JAXPDOMParser extends JASDOMParser
{
/**
* Create a DOM document by reading an XML file
* @param in A reader set up to read an XML file
* @param fileName The name of the file being read (used in error messages)
* @return Document The resulting DOM
* @exception XMLException thrown if there is an error reading the XML
*/
public Document parse(Reader in, String fileName) throws JASXMLException
{
return parse(in,fileName,null);
}
/**
* Create a DOM document by reading an XML file with an explicit entity resolver.
* An entity resolver is typically used to specify where to find the DTD for the XML
* document.
* @param in A reader set up to read an XML file
* @param fileName The name of the file being read (used in error messages)
* @param resolver An entity resolver to use when reading the XML file
* @return Document The resulting DOM
* @exception XMLException thrown if there is an error reading the XML
*/
public Document parse(Reader in, String fileName, EntityResolver resolver) throws JASXMLException
{
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(true);
DocumentBuilder parser = factory.newDocumentBuilder();
XMLErrorHandler errorHandler = new XMLErrorHandler(fileName);
parser.setErrorHandler(errorHandler);
if (resolver != null) parser.setEntityResolver(resolver);
InputSource is = new InputSource(in);
is.setSystemId("file:/");
Document doc = parser.parse(is);
if (errorHandler.getLevel() > 1) throw new SAXException("Error during XML file parsing");
return doc;
}
catch (SAXException x)
{
throw new JASDOMParser.JASXMLException("Syntax error parsing XML file",x);
}
catch (IOException x)
{
throw new JASDOMParser.JASXMLException("IO error parsing XML file",x);
}
catch (ParserConfigurationException x)
{
throw new JASDOMParser.JASXMLException("Can not create XML parser",x);
}
}
}