今天,碰到了这样的问题:自己写了一个config.xml这样的配置文件,
路径:D:\programming software\myeclipse\workspace\Controller\WebRoot\WEB-INF\classes,
项目:是直接在window7下的MyEclipse中建的,被默认放在D:\programming software\myeclipse\workspace\,
用的是apache的dom4j的jar包,
代码:
public class XmlTest{
public static void main(String[] args){
XmlTest xml = new XmlTest();
xml.readXml();
}
pubic void readXml(){
URL url = getClass().getResource("/"); //获取源文件的路径
String path = url.getFile();
SAXReader reader = new SAXReader();
Document config = reader.read(new File(path)); //读取配置文件
System.out.println("config: " + config);
}
}
然后报这样的错误:
org.dom4j.DocumentException: D:\programming%20software\myeclipse\workspace\Controller\WebRoot\WEB-INF\classes\config.xml (系统找不到指定的路径。) Nested exception: D:\programming%20software\myeclipse\workspace\Controller\WebRoot\WEB-INF\classes\config.xml (系统找不到指定的路径。)
at org.dom4j.io.SAXReader.read(SAXReader.java:266)
at com.lyf.test.XmlTest.readXml(XmlTest.java:28)
at com.lyf.test.XmlTest.main(XmlTest.java:18)
Nested exception:
java.io.FileNotFoundException: D:\programming%20software\myeclipse\workspace\Controller\WebRoot\WEB-INF\classes\config.xml (系统找不到指定的路径。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at org.dom4j.io.SAXReader.read(SAXReader.java:243)
at com.lyf.test.XmlTest.readXml(XmlTest.java:28)
at com.lyf.test.XmlTest.main(XmlTest.java:18)
Nested exception: java.io.FileNotFoundException: D:\programming%20software\myeclipse\workspace\Controller\WebRoot\WEB-INF\classes\config.xml (系统找不到指定的路径。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at org.dom4j.io.SAXReader.read(SAXReader.java:243)
at com.lyf.test.XmlTest.readXml(XmlTest.java:28)
at com.lyf.test.XmlTest.main(XmlTest.java:18)
很明显,读取源文件时,由于MyEclipse所在的文件目录在开始新建时没有考虑到,读取时空格
时被替换为了%20
,当时第一反应是把programming software这个文件夹中的空格给去掉,
结果:
然后,就想是去改环境变量,结果上网没有搜到结果,重装软件?还是感觉麻烦,晕死,实在没办法,睡觉去了,因为当时刚好吃过午饭,脑袋晕乎乎的。
一觉醒来,忽然发现只是取到的字符串包含那个字符,直接替换就应该ok了,结果试了试,大吉。。。
修改后代码如下:
URL url = getClass().getResource("/");
String path = url.getFile().replace("%20", " ") + "config.xml";
SAXReader reader = new SAXReader();
Document config = reader.read(new File(path));
System.out.println("path: " + path);
然后问题就解决了。。。
之所以贴出这篇文章,就是因为有过一次也是读取配置文件的,不过是读的是type.properties内容,而在网上搜的类型大全,贴入文件中时,同时贴入了大量的空格,在读取的时候就狂报错误,然后花费了估计半个小时的时间把空格给去掉,所以对空格
教训深刻。。。。
最后,欢迎广大同胞们拍砖,有什么好的点子可以共同讨论。。。。
分享到:
相关推荐
**DOM4J解析XML实例详解** 在Java编程中,处理XML文档是一项常见的任务。DOM4J是一个非常流行的、强大的Java XML API,它提供了灵活且高效的方式来解析、创建、修改XML文档。本文将深入探讨如何使用DOM4J进行XML...
本文将深入探讨如何使用Dom4j解析XML以及解决中文乱码的问题。 首先,让我们了解Dom4j的基本用法。在解析XML文件时,通常会使用`DocumentBuilderFactory`和`DocumentBuilder`来创建一个`Document`对象,然后通过这...
### DOM4J解析XML时DTD路径问题 在处理XML文件时,经常需要用到DOM4J这样的库来进行解析。当XML文件包含DTD(Document Type Definition)声明时,DOM4J默认会尝试从指定的URL加载DTD文件来进行验证。这通常是为了...
以下是一个DOM4J解析XML的简单示例: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; public class Dom4jExample { public static void main(String[] args) {...
**Dom4j解析XML+使用简介** Dom4j是一个非常流行的Java库,专门用于处理XML文档,它提供了灵活且高效的方式来解析、创建和操作XML内容。这个库在XML处理领域中备受推崇,因为它简单易用,同时又具有高度的灵活性和...
在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行的、功能强大的开放源代码库。这个库不仅简化了XML处理,还提供了XPath和XSLT的支持,使其成为Java开发者处理XML的首选工具之一。 **...
1. **DOM解析方式**:DOM4J通过DOM接口来解析XML,将整个XML文档加载到内存中形成一个树形结构,称为DOM树。这样做的优点是可以方便地通过路径导航访问任何元素,缺点是如果XML文件过大,可能会消耗大量内存。 2. *...
总结来说,这个压缩包提供了DOM4J解析XML文件所需的关键组件,包括DOM4J本身、XPath处理器Jaxen以及XML解析器Xerces。有了这些工具,开发者可以高效地处理XML文档,实现数据的读取、查询和修改,为Java应用程序带来...
**四、DOM4J解析XML的基本步骤** 1. **导入依赖**:在项目中引入DOM4J的库,通常使用Maven或Gradle进行管理。 2. **创建Document对象**:使用`DocumentHelper.createDocument()`方法创建一个空的XML文档。 3. **解析...
4. DOM4J解析: DOM4J是一个Java库,提供了更高级别的API,使得XML处理更加简便。它支持DOM、SAX和JDOM等多种解析器,且提供了一致的接口。DOM4J尤其适合复杂的XML操作,如XPath查询和XML Schema处理。使用DOM4J,...
### Dom4j解析XML及其中文问题解决 #### 一、Dom4j简介 Dom4j是一种用于处理XML的Java库,它提供了一种简洁而强大的API来读取、写入和操作XML数据。自2001年首次发布以来,Dom4j因其直观的接口和高效的性能而在...
使用DOM4J解析XML,首先需要引入其依赖库,然后可以使用`DocumentBuilderFactory`和`DocumentBuilder`创建`Document`对象,再通过`XPath`表达式进行节点操作。 ```java import dom4j.Document; import dom4j....
在这个名为"DOM4J解析XML—FSXML"的压缩包中,我们很可能会找到关于如何使用DOM4J来解析和操作XML文件的示例代码或教程。 在XML解析领域,DOM(Document Object Model)是一种标准的表示XML文档的树形结构,它将XML...
在提供的“analysis_xml”项目中,很可能包含了一个示例,演示了如何使用dom4j的SAX解析器解析XML文件。这样的测试项目有助于理解SAX解析的工作原理,并在实际开发中应用。 总结起来,dom4j库提供了DOM和SAX两种XML...
使用DOM4J解析XML,首先需要导入DOM4J库,然后使用`DocumentHelper`类的`parseText()`或`parse()`方法。比如: ```java Document doc = DocumentHelper.parseText(new File("testxml.xml").getText()); Element root...
**标题解析:** "Dom4j解析XML实现功能树" 这个标题表明我们要讨论的是如何使用Dom4j这个Java库来解析XML文档,并构建一个功能性的层次结构,即“功能树”。通常,这种树状结构可以用于表示应用程序的菜单、权限结构...
本文将详细介绍生成和解析XML的四种主要方法:DOM、DOM4J、SAX和JDOM。 1. DOM(Document Object Model) DOM是W3C组织推荐的一种解析XML的标准方式。它将XML文档视为一个树形结构,每个节点代表XML文档的一部分。...
在使用DOM4J解析XML时,可能会遇到一个特定的问题:`java.lang.IllegalStateException`异常。这个异常通常意味着在执行某些操作时,系统处于不合法或不恰当的状态。在DOM4J的上下文中,这可能是因为缺少了与DOM4J...
**DOM4J解析XML的优势:** 1. **灵活性**:DOM4J提供了丰富的接口和方法,支持XPath查询,可以方便地进行XML结构的操作。 2. **性能**:DOM4J不仅支持DOM解析,还支持SAX和STAX解析,后者在处理大型XML文件时能有效...
本文主要介绍了如何使用Dom4j库来解析XML文档,包括创建XML文档、添加、修改和删除节点,以及处理XML文档的格式化输出和中文问题。Dom4j是一个在SourceForge.net上的开源Java项目,它提供了对XML的高效解析功能,以...