Xml建模分为里俩步:建模和往模型中放东西
XML建模实例 ConfigModel ActionModel ForwardModel
先从没有子标签的开始定义成实体类
需要定义标签中属性,和编写set get方法
private String name;
private String path;
private boolean redirect;
如果底下有子标签的实体类
定义了标签中的属性后 底下的子标签(可以使用集合)
可以使用List集合 set集合 map集合(根据子标签的条件选择集合)
同一action 可以饱含0~N个forward标签(Map),标签下的forward标签name值不能相同 使用Map集合键值对
Map<String, ForwardModel> forwardModel=new HashMap<String, ForwardModel>();
在acction中放入forward
根据传递过来的forward中的name是否存在 (键值对)
如果存在了抛出一个异常 运行就已经结束了,后面的代码就会运行 否则这个name是唯一的,可以放入map中
public void put(ForwardModel forwardModel) {
if(this.forwardModel.containsKey(forwardModel.getName())) {
throw new RuntimeException("该键位已经存在");
}
this.forwardModel.put(forwardModel.getName(), forwardModel);
}
根据键位取值--->判断键位是否存在
public ForwardModel get(String name) {
if(null==this.forwardModel.get(name)) {
throw new RuntimeException("该键位已经存在");
}
return this.forwardModel.get(name);
}
Config底下的子标签 action中path:以/开头的字符串,并且值必须唯一
往模型中放入内容
写一个不得不调用的方法,只要用户调用该方法,就能获取到xml中所有的内容,需要返回一个ConfigModel给用户
第一步 封装一个构造方法
public ConfigModel() { }
第二步 自己编写一个方法帮助用户获取configmodel并且用户传个路径
public static ConfigModel createConfigModel(String path) throws DocumentException
//默认路径 private static final String PATH="/lib/config.xml"; 对象加在ConfigMOdel
1.先解析2.后赋值
用户传了就用用户的,没传就是默认路径
赋值
循环遍历所有的action
循环遍历所有的action找到对应的forward
循环将forward放入到对应的action中
循环将action放入到对应的Config中
可以参考一下代码
//后赋值
List<Element> action = read.selectNodes("/config/action");
//循环遍历所有的action
for (Element e : action) {
ActionModel actionModel=new ActionModel();
actionModel.setPath(e.attributeValue("path"));
actionModel.setType(e.attributeValue("type"));
//循环遍历所有的action找到对应的forward
List<Element> forward = e.selectNodes("forward");
for (Element f : forward) {
ForwardModel forwardModel=new ForwardModel();
forwardModel.setName(f.attributeValue("name"));
forwardModel.setPath(f.attributeValue("path"));
//需要强转 可以写来个俩个set方法
forwardModel.setRedirect(f.attributeValue("redirect"));
//循环将forward放入到对应的action中
actionModel.put(forwardModel);
}
configModel.put(actionModel);
}
return configModel;
}
测试时需要创建ConfigModel调用自己编写的方法