`
猪才怪
  • 浏览: 23926 次
  • 性别: Icon_minigender_1
  • 来自: 济南
文章分类
社区版块
存档分类
最新评论

dom4j 忽略 dtd 验证

阅读更多
在使用dom4j 对 xml文件解析时经常会碰到dtd验证的问题。
像下面的声明:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
...



在读取的时候会遇到如下错误信息:
org.dom4j.DocumentException: Connection timed out: connect Nested exception: Connection timed out: connect
	at org.dom4j.io.SAXReader.read(SAXReader.java:484)
	at org.dom4j.io.SAXReader.read(SAXReader.java:264)


解决方法:
reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);


更多代码如下:

try {
			File file = new File("F:/zhucaiguai/hibernate.cfg.xml");

			SAXReader reader = new SAXReader();
			
			reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
		
			Document doc = reader.read(file);

			Element root = doc.getRootElement();
			
			System.out.println(root.asXML());
			

//			OutputFormat format = new OutputFormat();
//			XMLWriter output = new XMLWriter(new FileWriter(file), format);// 更新XML文件
//			output.write(doc);
//			output.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
分享到:
评论

相关推荐

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

    ### 解析XML文件(字符串)的两种方法 在软件开发过程中,XML作为一种常见的数据交换格式,在数据传输和存储中扮演着重要角色。...此外,还讨论了如何在使用DOM4J库时忽略DTD验证,这对于提高解析性能非常有帮助。

    Xerces-J-tools.1.2.1.zip

    3. 配置XMLReader:可以设置各种解析器属性,如是否忽略未知命名空间、是否验证文档等。 4. 解析XML文档:调用XMLReader的parse方法,传入XML文档的输入源。 此外,Xerces-J还提供了其他功能,例如DOM解析器,适用...

    tinyxml+tinyxpath组合编程套件,很好的编程工具,都是源码

    另一种是忽略DTD文件,只要基本格式正确,就可以进行解析。 就我所知,验证的解析器通常都是比较重量级的。TinyXml不支持验证,但是体积很小,用在解析格式较为简单的XML文件,比如配置文件时,特别的合适。

    Xml解析.docx

    此外,DOM解析器支持DTD(Document Type Definition)和XML Schema进行验证,可以通过调用`setValidating()`和`setIgnoringElementContentWhitespace()`方法来开启或关闭验证和忽略元素内容中的空白。 2. SAX解析:...

    xml解析Demo以及相关jar包

    - **dom4j**:是一个强大的Java XML API,支持DOM、SAX和JDOM,提供了更简单、更面向对象的API来处理XML。 - **jaxb-api**:Java架构XML绑定,用于XML和Java对象间的转换。 - **sax**:Java标准版中的SAX解析库。...

    Java基础学习31.pdf

    - DOM(Document Object Model)操作:使用DOM4J库解析XML,通过`Document`、`Node`、`Element`、`Attribute`和`Text`对象处理XML结构。 - CRUD操作:创建、读取、更新和删除XML数据。 **中高级Java工程师面试知识...

    nekohtml-1.9.14源码及jar包

    - **DTD(Document Type Definition)**:nekohtml支持对HTML和XHTML DTD的理解,可以验证文档是否符合指定的DTD。 - **Entity Resolver**:nekohtml允许用户自定义实体解析器,处理HTML中的特殊字符或外部引用。 ...

    xml读取,不需要任何jar包

    需要注意的是,虽然Java标准库提供了这些功能,但在某些情况下,如处理大型XML文件或需要更高级的功能(如XPath查询),可能需要引入如Apache DOM4J或JDOM等第三方库,它们提供了更高效、更易用的API。 在提供的`...

    php 解析xml 的四种方法详细介绍

    - 优点:功能强大,支持完整的XML DOM操作,可以处理复杂的XML结构,包括命名空间和DTD验证。 - 缺点:内存消耗较大,因为整个文档被加载到内存,处理大型XML文件时可能会遇到性能问题。 - 示例: ```php $doc ...

    SAX2 API (英文html)

    2. 设置XMLReader的各种属性,如是否忽略空白文本、是否验证XML等。 3. 实现ContentHandler、EntityResolver、DTDHandler和ErrorHandler接口,并注册到XMLReader中。 4. 使用XMLReader的`parse`方法开始解析XML输入...

    php解析xml 的四种简单方法(附实例)

    它不验证XML文档,忽略DTD,但会检查文档的结构完整性。如果XML文档格式不正确,解析过程将终止并返回错误信息。由于事件驱动的机制,Expat解析速度快,适用于处理大型XML文档。然而,它不支持对XML结构的动态修改和...

    SAX

    - 然后,设置解析器的属性,例如是否忽略XML声明,是否验证文档等。 - 接着,通过解析器的`parse()`方法,指定要解析的XML文件。 - 在解析过程中,解析器会调用预先定义好的事件处理器接口,如`ContentHandler`和...

    XML1.0标准(第二版).pdf

    XML处理器可以根据需求配置为进行验证(检查文档是否符合DTD或Schema定义)或不进行验证。 ##### 5.2 使用 XML 处理器 使用XML处理器可以读取、解析和操作XML文档。常见的处理器包括DOM解析器和SAX解析器。 #### 6...

    C# XML 类库

    .NET框架还提供了处理DTD和XML Schema(XSD)的类,如`XmlSchema`和`XmlSchemaSet`,用于验证XML文档是否符合预定义的规则。 总的来说,C# XML类库为XML处理提供了全面的支持,无论是简单的数据交换还是复杂的文档...

    xmlreader_src.zip_Windows编程_Visual_C++_

    2. **设置解析选项**:在开始解析之前,可以通过XMLReader设置各种选项,例如是否忽略白色空格、是否验证DTD(文档类型定义)等。 3. **打开和读取流**:XMLReader需要一个输入源,可以是一个文件、网络流或其他...

    PHP XML Expat解析器知识点总结

    PHP中的XML Expat解析器就是一种基于事件的解析器,它不需要进行有效性验证(即忽略DTD声明),因此执行速度快且体积轻巧,非常适合用于PHP开发的Web应用。Expat解析器能够快速解析良好的XML文档,并且遇到不良的XML...

Global site tag (gtag.js) - Google Analytics