Xml建模

 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调用自己编写的方法

 
                

                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值