簡體   English   中英

XML解析器Java跳過dtd驗證

[英]XML parser java skip dtd validation

我想跳過DTD驗證,因為我沒有互聯網連接,是否可以在Java中實現它。

我的代碼是:

  file = new File(filepath);  

            // Create instance of DocumentBuilderFactory  
            factory = DocumentBuilderFactory.newInstance();  

            // Get the DocumentBuilder  
            docBuilder = factory.newDocumentBuilder();  

            // Using existing XML Document  

            doc = docBuilder.parse(file);  

我的錯誤是這樣,我知道此錯誤的原因。

a.net.UnknownHostException: www.jboss.org  
        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(UnknownSource)  
        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 com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)  
        at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(Unknown Source)  
        at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(Unknown Source)  
        at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(Unknown Source)  
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(Unknown Source)  
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)  

一種令人發指的技巧是編寫一個自定義java.io.InputStream擴展名,該擴展名僅在解析器看到DTD引用之前將其刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM