`
chainhou
  • 浏览: 174666 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

设置dom4j不检查xml中的dtd声明

阅读更多
今天在做一个web应用部署验证功能。部署的时候需要通过解析其配置文件来得到具体的contextRoot,以此来判断是否和服务器上以存在的应用contextRoot冲突。解析的配置文件的时候,xml中有dtd声明,dom4j读取xml的时候应该是去联网获取dtd了,相应的dtd只在本地存在,所以按照dtd的url会返回404,造成读取xml失败
Nested exception: java.io.FileNotFoundException: http://xxxxx/j2ee/dtds/xxxx.dtd
 at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1194)
 at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:973)
 at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:905)

后来google了一下,这篇文章的方式可以解决
http://blog.csdn.net/luo_yifan/article/details/5904369
主要是设置一下SAXReader的EntityResolver,之后就不会再检查dtd了。
		SAXReader saxReader = new SAXReader();
		saxReader.setEntityResolver(new EntityResolver() {  
			public InputSource resolveEntity(String publicId,  
			String systemId) throws SAXException, IOException {  
			InputSource is = new InputSource(new StringBufferInputStream(""));  
			is.setPublicId(publicId);  
			is.setSystemId(systemId);  
			return is;  
			}  
			}); 

需要注意的是:
InputSource is = new InputSource(new StringBufferInputStream("")); 
这中间的StringBufferInputStream如果换成了自己传过来的inputstream,对于zip文件可能正常解析,对于FileInputStream,直接指向某个xml文件时,会出现IOException:Read error 原因还不清楚
分享到:
评论

相关推荐

    DOM4J解析XML时DTD路径问题

    在DOM4J解析过程中,如果XML文件包含了如下的DTD声明: ```xml <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> `...

    dom4j解析xml详解

    12. **Node**: 为DOM4J中的所有XML节点提供一个多态接口,包括`Element`、`Attribute`、`Comment`等,简化了节点类型的处理。 13. **NodeFilter**: 定义了节点过滤器的行为,可以在遍历节点时应用条件筛选。 14. **...

    dtd定义xml dom4j解析xml小类

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

    java中dom4j读写XML

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

    dom4j.jar,dom,xml,dom4j

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

    dom4j_dom4j1.6.1安装包_

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

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

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

    dom4j.jar,java xml

    总的来说,DOM4J作为Java中处理XML的重要工具,为开发人员提供了高效、灵活的解决方案。它不仅能够处理小规模的XML文件,而且在处理大规模XML时,通过优化的API和内存管理,能够显著提高性能。在实际开发中,掌握DOM...

    dom4j-1.6.1 与 dom4j-2.0.0-ALPHA

    总的来说,DOM4J是XML处理领域中的一个重要工具,无论是在简单的数据提取还是复杂的文档操作中,都能提供强大而灵活的支持。了解并掌握DOM4J的使用,对于任何涉及XML的Java开发者来说都是非常有价值的技能。

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

    2. **SAX和StAX支持**:除了DOM,DOM4J还支持事件驱动的SAX和流式的StAX解析模型,这些模型在处理大型XML文件时特别有用,因为它们不需要将整个文档加载到内存中。 3. **XPath支持**:DOM4J内置了XPath支持,这使得...

    dom4j解析xml例子

    3. **查询XML**:DOM4J支持XPath表达式,可以方便地查找XML中的特定节点。例如,使用`selectNodes()`或`selectSingleNode()`方法: ```java Element root = document.getRootElement(); List<Element> elements =...

    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....

    dom4j-1.6.1.jar

    DOM4J是一个强大的Java库,专门用于处理XML文档。它是一个灵活且高性能的XML解析器,提供了丰富的API来创建、修改和操作XML内容。在Java世界中,DOM4J是继JDOM之后的一个非常受欢迎的选择,它弥补了标准Java DOM API...

    DOM4J帮助文档及使用教程

    7. **XPath支持**:DOM4J支持XPath表达式,教程会讲解如何使用XPath快速定位XML文档中的特定节点。 8. **事件处理**:如果需要在解析或操作XML时执行某些动作,可以注册监听器或处理器,DOM4J提供了相应的API。 9....

    dom4J解析XML文件

    在这个场景中,我们将深入探讨DOM4J在解析XML文件方面的应用。 XML(Extensible Markup Language)是一种用于存储和传输数据的标记语言,广泛应用于Web服务、配置文件、数据交换等领域。DOM4J作为一个解析器,它的...

    XML DOM4J学习笔记

    5. XPath:DOM4J支持XPath表达式,用于快速定位XML文档中的节点。 三、DOM4J操作XML 1. 解析XML:使用DocumentBuilder解析XML文件,创建Document对象,例如`Document document = DocumentHelper.parseText(xml...

    XML DTD XSL XLD DOM

    DTD通过声明元素、属性以及它们之间的关系,来确保XML文档的合法性。例如,一个DTD可以规定某个元素必须包含哪些子元素,或者元素是否可以有特定的属性。在"DTD简介.doc"中,你可能能找到关于如何创建和使用DTD的...

    dom4j源代码,包含dom4j.jar

    此外,DOM4J还支持XML Schema和DTD(文档类型定义),可以进行XML文档的验证,确保其符合预定义的规则。这有助于保证数据的准确性和一致性。 在压缩包中的`dom4j-1.6.1`目录下,通常会包含DOM4J的源代码文件、jar...

    解析xml文件dom4j

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

Global site tag (gtag.js) - Google Analytics