分析:
-
将每个元素节点看作一个类,元素节点的属性就是类的属性,元素节点下的子元素节点就用集合来装。
创建一个模型类:ConfigModel、ActionModel、ForwardModel。ConfigModel中没有属性,只有0~N个ActionModel;
ActionModel中有属性path,type,还有0~N个ForwardModel;
ForwardModel中有属性name,path,redirect,没有子元素节点。
public class ConfigModel implements Serializable{
private Map<String, ActionModel> configMaps = new HashMap<String, ActionModel>();
//封装,重写get方法,put方法自己写
}public class ActionModel implements Serializable{
private String patht;
private String type;
private Map<String, ForwardModel> forwardMaps = new HashMap<String, ForwardModel>();
//封装,重写get/set方法,集合写put和get
}public class ForwardModel implements Serializable{
Map<String, String> configMaps = new HashMap<String, String>();
}注:一般类中放一个无参的构造方法。
写好后与xml对比下,写的这些类与xml结构是否匹配,缺什么补什么。
- 创建工厂类:ConfigModelFactory,用来生产ConfigModel。
工厂模式:私有化构造方法,创建静态代理方法。
操作步骤:
1.分析config.xml,根据元素,创建相应的 model 实体类
Forward类
Action类
Config类
-
为每个model实体类设置属性和set/get方法
注意:Action类中声明一个Map集合,并且将Forward对象的name做为Map集合的key,将Forward做为Map集合的value,然后再添加两个操作Map集合的方法:addForward(), getForward(),作用是可以从Map集合中添加Forward对象,和取出Forward对象。 -
创建工厂类
创建Config类的工厂类:ConfigFactory,用于实例化Config对象
通过dom4j+xpath去解析config.xml,将每个元素都实例化相应的对象,存入父级Map集合中 -
创建测试类
从Config从获得Map集合,遍历
再从Action中获得Map集合,遍历