java - 如何使用 DOM 解析器解析忽略 DOCTYPE 声明的 xhtml

标签 java xml xml-parsing

我在使用 DOM 解析器解析带有 DOCTYPE 声明的 xhtml 时遇到问题。

错误: java.io.IOException:服务器为 URL 返回 HTTP 响应代码:503: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd%20

声明:DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

有没有办法将 xhtml 解析为忽略 DOCTYPE 声明的 Document 对象。

最佳答案

一个对我有用的解决方案是为 DocumentBuilder 提供一个返回空流的假解析器。这里有一个很好的解释(看看kdgregory的最后一条消息)

http://forums.sun.com/thread.jspa?threadID=5362097

这是 kdgregory 的解决方案:

documentBuilder.setEntityResolver(new EntityResolver()
        {
            public InputSource resolveEntity(String publicId, String systemId)
                throws SAXException, IOException
            {
                return new InputSource(new StringReader(""));
            }
        });

关于java - 如何使用 DOM 解析器解析忽略 DOCTYPE 声明的 xhtml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2640825/

相关文章:

java - 获取当前用户的路径而不是java中的应用程序路径

java - 如何在 Server.xml 中添加两个或多个资源

c# - 使用 XML 解析器从 DTSX 文件中获取 XML 元素值

java - 如何使用 jaxb 循环处理多个 xml 文件

java - 将 JAVA HOME 作为参数传递给 mvn

java - 如何随机选择遍历列的数据并在 Mysql DB 中形成一行?

xml - xsl : how to split strings?

sql - Oracle SQL 从多个元素中提取值

java - 程序可以编译,但运行时会报错

java - 如何将org.dom4j.io.SAXReader解析的xml文档转换为可视化的Swing树?