这次我们主要讲一下用 dom 4j 文件读取中过程中的路径问题。关于 dom4j 读取XML文件路径问题,其 原因主要不在于 dom4j, 而在于 web 项目发布之前的文件和 web 项目发布后的文件在位置上发生变化导致了路径问题的产生 。
Web 项目发布之前
为了更好的解释这种现象,我在首先项目中创建了几个 xml 文件,如下图所示:
在上图中, file1.xml 位于 test 包中; file2.xml 位于 src 目录下; file3.xml 位于 WEB-INF 文件夹下; file4.xml 位于 WebRoot 文件夹下; file5.xml 位于项目 XmlTest 下与 src 同级 。
Web 项目发布之后
了解了 Web 项目发布之前的文件位置之后,我们再来看一下 Web 项目发布之后的文件位置和能够找到的文件都有哪些?
fil e5.xml
我们从最外层看 xml 文件的变化。首先,打开项目文件夹 XmlTest ,可以看出 位于项目 Xml Test 下与 src 同级的 file5.xml 文件,在 web 项目发布之后就找不到了 ,所以如果读取 file5.xml 文件肯定会出错的!如下图所示:
file 4.xml
接下来,我们看一下 fil e4.xml 文件夹,可以看出 位于项目中 WebRoot 中的 file4.xml 文件将直接位于项目 XmlTest 文件下 。如上图所示。
file3.xml
打开 Web-INF 文件夹,我们依然能够在其中找到 fil e3.xml 文件,所以我们得出结论 位于 WEB-INF 文件夹下的文件 file3.xml 文件位置相对不 变 。
file 2.xml
通过分析 XmlTest 文件夹我们可以看出,我们找不到 src 文件夹,那么 src 文件夹到哪里去了呢?其实 src 文件夹在 web 项目发布之后就会将 *.java 的文件编译,编译完成之后的文件将位于 WEB-INF/classes 文件下,所以我们得出结论 位于 src 文件夹下的文件,经过项目编译后将位于 WEB-INF/classes 文件下 ,其相对文件位置不变。如下图所示
fil e1.xml
还剩最后一个 file 1.xml 文件,其实我们根据上面的解释可以猜测出, 位于包中的 file1.xml 在项目发布之后,其位置相对于包不变,只是将包变成文件夹 。如下图所示:
到目前位置我们已经基本上可以看出, web 项目发布之前和发布之后一些文件的变化,这对于我们分析项目路径,对一些文件进行操作至关重要。
分析完毕路径问题之后,读取 xml 文件就变得简单了,这里不再赘述,下次我们将介绍一下 Struts 框架的几个重要概念。