XML的解析和建模

XML的解析

  • Java中配置文件的三种配置位置及读取方式
  • dom4j+xpath解析xml文件

1、Java中配置文件(.properties文件、.xml文件)的三种配置位置及读取方式
1.1 位置: src根目录下
读取方式:
类名(类名去点class)例如:

PropertiesDemo.class.getResourceAsStream("/db.properties");

1.2 位置:与读取配置文件的类在同一包
读取方式:
类名(类名去点class)例如:

PropertiesDemo.class.getResourceAsStream("db.properties");
注意:此处无“/”

1.3 位置:WEB-INF下(或其子目录下)
读取方式:

ServletContext application = this.getServletContext();
InputStream is = application.getResourceAsStream("/WEBINF/config3.properties");

注:.properties文件的解析方式由java.util.properties这个类来完成
如:
XML的解析和建模_第1张图片
结果如下:
XML的解析和建模_第2张图片
而.xml文件的解析需要一个工具来完成解析
如:dom4j和sax解析(常用dom4j解析xml文件,所以下面也是用着dom4j解析的)
sax解析:由上往下解析
dom4j解析:由外到内解析

2、dom4j+xpath解析xml文件(我们用一个例子来解释)
xpath:因为xpath等同数据库的select语句,所以它也可以查看单个和查询一组

document.selectNodes(xpath);//查一组
document.selectSingleNode(xpath);//查单个

首先:先写一个.xml的文件(以下是一个.xml的文件,我们放了id和学生姓名)
XML的解析和建模_第3张图片
然后我们获取到这个文件并把它读取出来
在这里插入图片描述

接下来就是把所有学生获取到
在这里插入图片描述
然后遍历打印学生的姓名即可
XML的解析和建模_第4张图片

结果如下:
XML的解析和建模_第5张图片

是不是觉得代码比较多,有点小麻烦?没关系,还有第二种方法
直接根据id准确的拿到该学生
在这里插入图片描述
打印结果一样的哦~

XML的建模

在xml的解析我们可以看出一个问题:
通过获取资源文件xml,可以拿到指定的xml字符串,
那么不同的人,有不同的需求,那么是不是意味着每一个人都需要对
指定xml字符串进行解析呢?

而建模的由来:
就是将指定的xml字符串当作对象来操作
如果说当对一个指定的xml格式字符串完成了建模操作,
好处在于,只需要调用指定的方法就可以完成预定的字符串获取;

建模的思路:
1、分析需要被建模的文件中有那几个对象
2、每个对象拥有的行为以及属性
3、定义对象从小到大(从里到外)
4、通过23种的设计模式中的工厂模式,解析xml生产出指定对象

好处:提高代码的复用性

以下用一个例子来实现建模
建模分两步:
1、以面向对象的编程思想,描述xml资源文件
2、将xml文件中内容封装进model实体对象。

首先,写一个.xml的文件,这里我们已经写好了一个了,
XML的解析和建模_第6张图片
然后依次把标签作为一个类,里面的属性作为类的属性,然后我们可以看出forward在action的里面,所有在action内写一个Map集合,而action又在config内,所有同样在config内写一个集合,这里还需要注意的是:config内可以增加无数个action这样的例子,也可以根据唯一值查询,所以config内肯定要写一个增加和查询的方法的,action同样如此。如下:XML的解析和建模_第7张图片
XML的解析和建模_第8张图片
XML的解析和建模_第9张图片
以上就是我建的类,接下来我们就去写方法了
XML的解析和建模_第10张图片
然后我们就可以测试一下
(在main方法里写好)
XML的解析和建模_第11张图片

结果如下:
XML的解析和建模_第12张图片
只需要修改括号里面的值,就可以查询出相应的结果了~谢谢

你可能感兴趣的:(XML的解析和建模)