`
229313998qq.com
  • 浏览: 5242 次
  • 性别: 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解析XML时DTD路径问题 在处理XML文件时,经常需要用到DOM4J这样的库来进行解析。当XML文件包含DTD(Document Type Definition)声明时,DOM4J默认会尝试从指定的URL加载DTD文件来进行验证。这通常是为了...

    dom4j解析xml详解

    ### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...

    dtd定义xml dom4j解析xml小类

    DTD 定义 XML DOM4J 解析 XML 小类 XML 文档类型定义(DTD)是用来定义一段合法的 XML 文档块的。它用来验证你的 XML 文档是以一系列合法的元素构成的。DTD 可以在 XML 文档内部定义,也可以通过外部文件的方式引入...

    dom4j解析xml例子

    这个“dom4j解析xml例子”压缩包应该包含了一些示例代码、帮助文档和使用说明,旨在帮助初学者快速理解和应用DOM4J。 在XML解析领域,DOM(Document Object Model)是一种将XML文档转换为内存对象树的方法。DOM4J是...

    dom4j解析XML的两个JAR包(dom4j-1.6.1.jar 和 jaxen.jar)

    DOM4J和JAXEN是Java中解析XML的两个重要库,它们在处理XML文档时提供了强大的功能。这里我们将深入探讨这两个库的核心概念、用途以及它们如何协同工作。 DOM4J是一个灵活且功能丰富的XML库,它完全支持JAXP(Java ...

    dom4J解析XML文件

    DOM4J作为一个解析器,它的主要功能包括读取XML文档、遍历XML结构、查找特定元素、修改元素内容以及创建新的XML文档。 首先,解析XML文件通常从构建Document对象开始。在DOM4J中,我们可以使用SAXReader类来实现这...

    用 dom4j解析xml例子

    - **XML Schema和DTD验证**:DOM4J还支持对XML文档进行Schema和DTD验证,确保数据的完整性和正确性。 - **XPath查询**:DOM4J支持XPath表达式,使得复杂的数据定位和提取更加容易。 - **事件驱动的解析**:除了基于...

    java中dom4j读写XML

    DOM4J不仅提供了基本的XML操作,还支持命名空间、事件处理、DTD和XML Schema验证等功能,是Java开发中处理XML的强大工具。学习和掌握DOM4J,能够极大地提高开发效率,特别是在需要频繁处理XML数据的场景下。

    解析xml文件dom4j

    此外,DOM4J还提供了对DTD(Document Type Definition)和XML Schema的支持,以验证XML文档的结构正确性。 DOM4J 2.0.3是更新的版本,它可能包含了更多的优化和新特性,比如对Java 8及更高版本的支持,以及性能上的...

    dom4j.jar,dom,xml,dom4j

    此外,DOM4J还包含了XML Schema和DTD(Document Type Definition)的支持,可以用于验证XML文档是否符合定义的结构。这对于确保数据的准确性和一致性至关重要。 DOM4J-1.6.1.jar是DOM4J的一个版本,发布于2006年。...

    dom4j-1.6.1 与 dom4j-2.0.0-ALPHA

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的API,使得XML的解析、创建、修改和查询变得简单。这次我们有两个版本的DOM4J库:1.6.1和2.0.0-ALPHA。这两个版本在功能、性能和API设计上都有所...

    dom4j_dom4j1.6.1安装包_

    DOM4J 1.6.1版的API还包括对XML Schema和DTD的支持,可以处理命名空间,提供事件驱动的处理模型,以及XML文档的序列化功能。这些特性使得DOM4J成为Java开发中处理XML的强大工具。 在实际开发中,DOM4J常用于读取...

    DOM4J帮助文档及使用教程

    4. **解析XML**:讲解如何使用DOM4J解析XML文件,包括SAX和DOM两种解析方式,并对比两者的优缺点。 5. **创建XML**:演示如何使用DOM4J创建新的XML文档,包括动态生成和修改XML结构。 6. **遍历与操作**:介绍如何...

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

    这将阻止XML解析器尝试解析任何外部资源,包括DTD。示例如下: ```csharp XmlDocument doc = new XmlDocument(); doc.XmlResolver = null; doc.Load(url); ``` 通过这种方式,`Load`方法将不会尝试加载XML文档中...

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

    #### dom4j解析XML时忽略DTD文件验证 在使用`SAXReader`或`DocumentHelper`解析XML时,默认情况下会验证DTD(Document Type Definition),这可能会导致解析速度变慢或者因为DTD文件不存在而抛出异常。为了提高效率...

    dom4j-1.6.1.jar

    1. **XML解析**:DOM4J提供两种主要的解析方式:SAX(Simple API for XML)和DOM。SAX是一种事件驱动的解析器,适合处理大型XML文件,而DOM则构建整个XML文档的树形结构,适用于小型或中型文件。 2. **XPath支持**...

    dom4j包和文档

    5. **XML文档验证**:DOM4J可以与XML Schema或DTD结合,验证XML文档是否符合预定义的结构规则。 总的来说,DOM4J是一个功能丰富的XML处理库,其灵活性和效率使其成为Java开发者的首选工具之一。配合JAXB,可以...

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

    在本文中,我们将深入探讨如何使用DOM4J来验证XML文档对DTD(Document Type Definition)的符合性,这是一个确保XML文档结构正确的重要步骤。 首先,我们需要理解DTD的作用。DTD是XML文档类型定义,它定义了XML文档...

    dom4j.jar,java xml

    2. **灵活性**:DOM4J支持多种XML解析方式,包括DOM、SAX和StAX,可以根据需要选择最合适的解析策略。 3. **XPath支持**:DOM4J提供了对XPath的支持,可以方便地通过表达式选取XML文档中的特定部分。 4. **文档建模*...

Global site tag (gtag.js) - Google Analytics