I think xerces may be downloading from the internet, something the LocalDTDResolver did not resolve.
How about putting a System.out.println() in the else{} of the LocalDTDResolver to print the public Id, system Id. public InputSource resolveEntity (String publicId, String systemId) > { > if (systemId.equals( mySystemIdToIntercept )) > { > return new InputSource( localDtdFileAsUrl.toString() ); > } > else > { > // use the default behaviour (?) System.out.println("Could not resolve entity locally for publicId :["+publicId+"] systemid :["+systemId+"]"); > return null; > } > } HTH -Prashant On Mon, 2008-03-03 at 07:37 -0800, Rob Davis-5 wrote: > Hi, I want to read in and validate an XML file against a local DTD. > > I have created a class based on EntityResolver which plugs into the Parser. > > However, this seems to be ignored because the parser still attempts to > connect over the internet to w3c which I do not want. I know this because of > the exception I get when it attempts (see below) > > See also below my code. > > Please advise > > java.net.ConnectException: Connection refused: connect > at java.net.PlainSocketImpl.socketConnect(Native Method) > at java.net.PlainSocketImpl.doConnect(Unknown Source) > at java.net.PlainSocketImpl.connectToAddress(Unknown Source) > at java.net.PlainSocketImpl.connect(Unknown Source) > at java.net.Socket.connect(Unknown Source) > at java.net.Socket.connect(Unknown Source) > at sun.net.NetworkClient.doConnect(Unknown Source) > at sun.net.www.http.HttpClient.openServer(Unknown Source) > at sun.net.www.http.HttpClient.openServer(Unknown Source) > at sun.net.www.http.HttpClient.<init>(Unknown Source) > at sun.net.www.http.HttpClient.New(Unknown Source) > at sun.net.www.http.HttpClient.New(Unknown Source) > at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown > Source) > at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown > Source) > at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) > at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown > Source) > at > org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:986) > at > org.apache.xerces.impl.XMLEntityManager.startEntity(XMLEntityManager.java:897) > at > org.apache.xerces.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:864) > at > org.apache.xerces.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:241) > at > org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(XMLDocumentScannerImpl.java:1001) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:324) > at > org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:845) > at > org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:768) > at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:108) > at org.apache.xerces.parsers.DOMParser.parse(DOMParser.java:230) > at SerializeTester.test(SerializeTester.java:30) > at SerializeTester.main(SerializeTester.java:62) > > > > import java.io.File; > import java.net.MalformedURLException; > import java.net.URL; > > import org.xml.sax.EntityResolver; > import org.xml.sax.InputSource; > > import java.io.File; > import java.io.FileInputStream; > import java.io.FileOutputStream; > import java.io.OutputStream; > import org.xml.sax.InputSource; > import org.w3c.dom.Document; > // Parser import > import org.apache.xerces.parsers.DOMParser; > > > > public class SerializeTester > { > // File to read XML from > private File inputXML; > > // File to serialize XML to > private File outputXML; > > public SerializeTester(File inputXML) > { > this.inputXML = inputXML; > } > > public void test(OutputStream outputStream) throws Exception > { > DOMParser parser = new DOMParser( ); > > // Get the DOM tree as a Document object > parser.parse(new InputSource( > new FileInputStream(inputXML))); > > LocalDTDResolver LocalDTDResolver > = new LocalDTDResolver( > "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd", > new File("C:/svgdtd/svg11.dtd") > ); > > > parser.setEntityResolver( LocalDTDResolver ); > > Document doc = parser.getDocument( ); > // Serialize > > org.w3c.dom.Element w3cSvgTextElement = doc.getElementById( > "LABEL_OUTLINE" > ); > > } > > public static void main(String[] args) > { > if (args.length != 2) > { > System.out.println( > "Usage: java javaxml3.SerializeTester " + > "[XML document to read] " + > "[filename to write output to]"); > return; > } > try > { > SerializeTester tester = > new SerializeTester(new File(args[0])); > tester.test(new FileOutputStream(new File(args[1]))); > } > catch (Exception e) > { > e.printStackTrace( ); > } > } > } > > > > > > public class LocalDTDResolver implements EntityResolver { > > String mySystemIdToIntercept; > File myLocalDtdPath; > URL localDtdFileAsUrl; > > public LocalDTDResolver( String systemIdToIntercept, File localDtdPath ) > throws MalformedURLException > { > mySystemIdToIntercept = systemIdToIntercept; > myLocalDtdPath = localDtdPath; > > localDtdFileAsUrl = myLocalDtdPath.toURI().toURL(); > } > > public InputSource resolveEntity (String publicId, String systemId) > { > if (systemId.equals( mySystemIdToIntercept )) > { > return new InputSource( localDtdFileAsUrl.toString() ); > } > else > { > // use the default behaviour (?) > return null; > } > } > } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]