【问题标题】:XML parser java skip dtd validationXML解析器java跳过dtd验证
【发布时间】:2014-03-12 03:04:51
【问题描述】:

我想跳过 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 xml-parsing dtd


    【解决方案1】:

    一个令人发指的 hack 是编写一个自定义的 java.io.InputStream 扩展,它只是在解析器看到它之前删除 DTD 引用。

    【讨论】:

      猜你喜欢
      • 2017-08-19
      • 2010-11-22
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-07
      • 2016-04-23
      • 2020-08-07
      相关资源
      最近更新 更多