java - XML解析器java跳过dtd验证

标签 java xml-parsing dtd

我想跳过 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 引用。

关于java - XML解析器java跳过dtd验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22334255/

相关文章:

java - Java 中的线程可以缓存 final 字段吗?

java - 我正在尝试解析 XML 文件,但在修复收到的错误时遇到一些问题

java - 如何使用 xml 文件中的数据创建 GUI?

python - 如何在 lxml 中解析 XML 时不加载注释

ruby-on-rails - 如何通过 Rspec 测试 has_many? [Shoulda-matchers]

c# - 使用外部 DTD 验证 XML

javax.ws.rs 按目标进行 REST 测试 - 在哪里获取或设置服务器地址?

java - tomcat拒绝访问特定文件

java - 如何使警报对话框按 Java 中的位置显示字符串中的项目?

html - 什么是 DOCTYPE?