XML的解析
首先,学习XML解析之前我们先来讲一下Java中配置文件的三种配置位置以及读取方式吧!
1、Java中配置文件的三种配置位置以及读取方式
第一种:XML
第二种:*.properties(属性文件)
第三种:ini(不常用)
OK,在了解了我们的三种存放位置之后我们再来讲一讲存放的位置以及读取方式!
存放位置:
a、src根目录下
我们一般使用下面这种方式进行读取,
类名.class.getResourceAsStream(“/xxx.properties”);
注意:在读取文件之前要自己建一个*.properties的文件,
那么这个文件要怎么新建呢?
按我下面的操作一步一步地进行就可以成功啦!
1、先找到File-----new-------Java project;
2、在你新建好了Java project之后,找到下面的src-------new-----file------把文件的后缀名改成为.properties的文件-----
里面再写上你需要的内容 像我下面展示的那样!!
b、与读取配置文件的类在同一个包
类名.class.getResourceAsStream(“xxx.properties”);
注意:下面这个是没有斜杠的!!!
OK,现在我们来看一下前面两种读取方式的代码以及运行后的结果!!!
下面这张截图呢,展示的就是我们读取之后的运行结果,可以看到这和我们最开始新建的db.properties文件中的内容是一样 的,以此证明,这两种方式都已经读取成功了!!
c、WEB-INF(或其子目录下)
ServletContext application = this.getServletContext();
InputStream is = application.getResourceAsStream("/WEB-INF/Xxx.properties");
好,我们现在来讲一下XML有哪些作用吧?
2、XML的作用
1、配置
2、数据交换 :XML(webservice技术)、 json格式(简单、方便)
重点:如何使用dom4j+xpath来解析文件呢?
3、dom4j+xpath解析文件
欧克,讲到这里之前,我们先了解一下,dom4j是什么呢?以及xpath指的又是什么呢?
实际上,dom4j指的是一个专门用来解析XML文件的程序!
而xpath就等同于数据库中的select语句!
在了解了这些之后,我来讲一讲一个案例,解析config.xml文件!!!!!
首先,学习一下这两个语法,一个是查询一组,一个是查询单个的!
document.selectNodes(xpath);//查一组
document.selectSingleNode(xpath);//查单个
然后我们再来了解一下关于Node(也就是节点)因为下面的代码会涉及到!
Node(节点):元素节点 属性节点 文本节点
那么可能有人就有疑问了,这几个节点指的是分别是什么呢?我们又要怎样去区分呢?
那么请再次看到我下面展示的代码截图!
提问:action下面有几个节点呢???
欧克,看到这个问题,我们需要知道的是action下面的节点包括元素节点,属性节点以及文本节点!
元素节点:有几个标签就有几个元素节点
属性节点:有几个属性就有几个属性节点
文本节点:有几个属性就有几个文本节点 因为属性节点中的值就是文本节点
以上面代码截图中的config.xml的片段为例,我们可以看到结果已经很显而易见了,
action下面有两个元素节点 两个属性节点 两个文本节点
其中两个forward标签就是action下的元素节点,
action中的path和type就是属性节点,而path和type中的值,也就是“/loginAction”和“test.loginAction”就是文本节点!
欧克,在了解了这些之后,我们也就可以慢慢地继续下一步操作了,像下面代码截图中的这样!
首先展示的是查询一组
下面这一张就是查询所有 也就是遍历action中所有节点运行结果的代码截图
这个呢,就是查询单个 也就是找path=/loginAction的action下 name=success forward的path值的运行结果!!
最后,一定要注意的是,config.xml文件一定要放在src的根目录下面,不然可能会报空指针异常!!!
以及在使用dom4j+xpath去解析xml文件的时候一定要记得先导入dmo4j的相关jar包,
分享一下jar导入的过程:
1、最好现在你电脑的磁盘里新建一个文件夹,专门放dom4j相关的jar包;
2、选中你新建的项目-------Build Path------Add External Archives-----找到你新建的文件夹-----
Ctrl+A选中两个jar包------点击打开
3、这样子操作过后就是导入成功了!!!