XML建模 今天学习了XML的建模,怎么说呢,代码繁琐 前奏像定义一个实体类entity,后面就要考虑写方法,方法中带参 心思缜密,清楚。 简单介绍:1 导包从内到外定义xml文件里面的属性(与entity一样),属性也要定义(String name)放值的方法:public void put(ForWardModel forwardModel) { //根据传递过来的Forward的name来判断该值是否存在 if(this.forwardModels.containsKey(forwardModel.getName())) {//当前forward传递过来的值如果包含name throw new RuntimeException("该键位["+forwardModel.getName()+"]已经存在");//抛出运行异常 } //否则说明这个name是唯一的,可以放入map中 this.forwardModels.put(forwardModel.getName(), forwardModel); }取值的方法: //根据ForWardModel 里面的name来取 public ForWardModel get(String name) { if(null==this.forwardModels.get(name)) { throw new RuntimeException("该键位["+name+"]不存在"); } return this.forwardModels.get(name); }注:最外面的一级,不能让用户new出来,因此进行封装private ConfigModel{}//封装xml文件路径:让用户带路径(写方法,带参) 没有路径,定义路径 private static final String PATH="/config.xml"帮助用户获取最外面一层的方法:先创建 ConfigModel com=new ConfigModel();解析并对路径进行判断InputStream is=null; //对解析的文件的路径进行判断 if(null==path) { is=ConfigModel.class.getResourceAsStream(PATH); }else { is=ConfigModel.class.getResourceAsStream(path); } SAXReader sax=new SAXReader(); Document document = sax.read(is);后赋值 List<Element> actionElements = document.selectNodes("/config/action");//解析的路径循环遍历for (Element actionElement : actionElements) { ActionModel actionModel=new ActionModel(); actionModel.setPath(actionElement.attributeValue("path")); actionModel.setType(actionElement.attributeValue("type")); List forwardElements = actionElement.selectNodes("forward"); //循环遍历所有的Action找到对应的fowWARD for (Element forwardElement : forwardElements) { ForWardModel forwardModel=new ForWardModel(); forwardModel.setName(forwardElement.attributeValue("name")); forwardModel.setPath(forwardElement.attributeValue("path")); forwardModel.setRedirect(forwardElement.attributeValue("redirect")); //循环将forward放入到对应的action中 actionModel.put(forwardModel); } com.put(actionModel); }在所有循环的外面返回该方法类型 return com;
07-14
1907