`
229313998qq.com
  • 浏览: 5120 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

dom4j解析XML忽略DTD请求

阅读更多
最近在做一个解析XML的功能,功能测试无问题。一次偶然的情况发现在断网情况,老是报解柝失败。研究最后原来是dom解析器在解析XML头DTD,会向DTD上的服务地址请求,在联网环境正常,在断网环境无响应,导致解析失败。研究了相关的API,在百度搜索了一把,找到以下解决方案:
需要设置DocumentBuilderFactory.setValidating(false)就可以达到效果了,但是解析器还是会读取DTD的,解决的方法是实现EntityResolver接口,具体代码如下:

class IgnoreDTDEntityResolver implements EntityResolver
{
    public InputSource resolveEntity(String publicId, String systemId)
            throws SAXException, IOException
    {
        return new InputSource(new ByteArrayInputStream(
                "<?xml version='1.0' encoding='UTF-8'?>".getBytes()));
    }
}


/**
     * 获取Document对象
     * @param xmlPath
     * @return
     */
    public static Document getDocument(String xmlPath)
    {
        SAXReader reader = new SAXReader();
        reader.setValidation(false);
        try
        {
            reader.setEntityResolver(new IgnoreDTDEntityResolver());
            return reader.read(new File(xmlPath));
        }
        catch(DocumentException e)
        {
            throw new java.lang.IllegalArgumentException("Can't parse the XML!");
        }
    }
分享到:
评论

相关推荐

    DOM4J解析XML时DTD路径问题

    使用dom4j解析含有这样dtd的xml文件时,它会从网络找到这个文件对xml文件进行校验。但是如果电脑断开网络的话就会出现错误说找不到dtd文件并解析失败。所以请使用以下方法...

    dtd定义xml dom4j解析xml小类

    最近用到xml 免不了学一点dtd的定义 而且也免不了解析xml了 我觉得dom4j挺好 就写了这么一个小类 有很多不精简 望大虾们指点。

    解析XML文件(字符串)的两种方法

    解析XML文件(字符串)的两种方法,dom4j解析XML时候忽略DTD文件验证

    DOM和SAX解析XML文档

    DOM和SAX解析XML文档

    xml与DTD,xml与DTD

    xml与DTD,xml与DTD,xml与DTD,xml与DTD

    dom4j api 参考手册

    org.dom4j.dtd Classes to represent the DTD declarations. org.dom4j.io Provides input and output via SAX and DOM together with writing dom4j objects to streams as XML text. org.dom4j.jaxb org.dom4j....

    jdom解析xml、dtd约束xml文件

    这是一个jdom解析xml的小例子、里面还有dtd文件的编写以及dtd文件约束xml文件。这是一个jdom解析xml的小例子、里面还有dtd文件的编写以及dtd文件约束xml文件。这是一个jdom解析xml的小例子、里面还有dtd文件的编写...

    使用XmlDocumentXmlDataDocument类加载XML文件时如何忽略DTD验证

    在XML文件含有外部DTD验证的时候,使用XmlDocument/XmlDataDocument类的Load方法会抛出如下的例外: System.Xml.XmlException: 未找到所需的 DTD 标记。 行 m,位置 n。 我们可以采用下面的方法不去加载外部资源: ...

    Dom4j 1.6.1 JAVA API

    dom4j帮助文档 官方API ...org.dom4j.dtd org.dom4j.io org.dom4j.jaxb org.dom4j.rule org.dom4j.rule.pattern org.dom4j.swing org.dom4j.tree org.dom4j.util org.dom4j.xpath org.dom4j.xpp

    XML DTD XSL XLD DOM

    XML例子 DTD例子 XSL例子 XLD例子 DOM解析

    xml.rar_Recall_XML DOM_html_xml_xml dtd

    从第二章到第四章,我们分别从XML语法、DTD和样式单三方面详细介绍XML的三个基本要件。在第五、第六章中,我们从与XML相关的协议和软件工具两个角度来分析XML的使用现状。第七、八、九章,我们将讨论一些与XML相关的...

    XML的DTD教程

    关于XML的DTD教程,关于XML的DTD教程,关于XML的DTD教程

    XML DTD,XmlSchema标准参考手册

    XML DTD和XmlSchema标准参考手册!!!!!!!!!!!!!!!!!!!!!!

    xml基础(dtd约束模式,schema约束模式,xslt样式,sax解析,dom解析,jom解析)

    本资料含有以下内容:xml基础 dtd约束模式 schema约束模式 xslt样式 sax解析 dom解析 jom解析

    XML、DTD、Schema

    XML、DTD、Schema笔记、使用方法、注意事项,尤其是对XML和DTD比较详细

    XML2DTD.jar

    xml转换dtd工具jar

    XML-DTD实例讲解

    XML入门精解之DTD 文件格式定义(XML DTD)  DTD实际上可以看作一个或多个XML文件的模板,这些XML文件中的元素、元素的属性、元素的排列方式/顺序、元素能够包含的内容等,都必须符合DTD中的定义。XML文件中的元素,...

    使用DOM4J验证DTD最简单的方法

    NULL 博文链接:https://17173.iteye.com/blog/617640

    使用DTD规范XML文档

    学习XML语言的DTD如何去写,如何更好的写出XML语言的DTD文档,对进一步深入学习XML有很大帮助。

    xml与dtd调用相关实例

    与xml相关内部dtd与外部dtd实例,内部dtd调用与外部dtd调用实例!

Global site tag (gtag.js) - Google Analytics