2011-01-19 46 views
2

我正在驗證使用Xerces的XML文件,並避免在我的類路徑中使用本地的所有架構文件(使用XML目錄)。如何防止Xerces訪問互聯網以獲取系統ID URI?

Validator validator = schema.newValidator(); 
    validator.setResourceResolver(CatalogResourceResolver.getInstance()); 
    validator.validate(getSource(true)); 

(的getSource(布爾值)得到的SAXSource)

通常,系統ID是一些URI或URL。

一些驗證需要很長一段時間了,最​​近我:

java.net.ConnectException: Connection timed out: connect 
at java.net.PlainSocketImpl.socketConnect(Native Method) 
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) 
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) 
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) 
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) 
at java.net.Socket.connect(Socket.java:529) 
at java.net.Socket.connect(Socket.java:478) 
at sun.net.NetworkClient.doConnect(NetworkClient.java:163) 
at sun.net.NetworkClient.openServer(NetworkClient.java:118) 
at sun.net.ftp.FtpClient.openServer(FtpClient.java:488) 
at sun.net.ftp.FtpClient.openServer(FtpClient.java:475) 
at sun.net.www.protocol.ftp.FtpURLConnection.connect(FtpURLConnection.java:270) 
at sun.net.www.protocol.ftp.FtpURLConnection.getInputStream(FtpURLConnection.java:352) 
at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) 
at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source) 
at org.apache.xerces.impl.XMLEntityManager.startDTDEntity(Unknown Source) 
at org.apache.xerces.impl.XMLDTDScannerImpl.setInputSource(Unknown Source) 
at org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(Unknown Source) 
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) 
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) 
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) 
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) 
at org.apache.xerces.jaxp.validation.ValidatorHandlerImpl.validate(Unknown Source) 
at org.apache.xerces.jaxp.validation.ValidatorImpl.validate(Unknown Source) 
at javax.xml.validation.Validator.validate(Validator.java:127) 

所以,很顯然,Xerces的是試圖下載該文件。

我該如何阻止?

+0

我找到了答案[這裏](http://stackoverflow.com/questions/155101/make-documentbuilder-parse-ignore- DTD引用)。 – 2012-01-27 15:04:11

回答