.xml建模

什么叫做xml建模?

建模的由来
(一)就是将指定的xml字符串当作对象来操作;
(二)以面向对象的编程思想,描述xml资源文件主要的就是把一个标签当做对象,而他的属性值当做元素。(形成所谓的键值对)

private Map<String, ActionModel> acMap=new HashMap<>();
	public void push(ActionModel actionModel) {
		acMap.put(actionModel.getPath(), actionModel);
		}
	
	public ActionModel pop(String path) {
		return acMap.get(path);
	}
	
	public static void main(String[] args) {
		ConfigModel configModel=new ConfigModel();
		ActionModel a=configModel.pop("");
	}

xml建模有哪些优点?

(一)只需要调用指定的方法就可以完成预定的字符串获取;
(二)提高代码的复用性。

案例:

(一)思路:
1、分析需要被建模的文件中有那几个对象;
2、每个对象拥有的行为以及属性;
3、定义对象从小到大(从里到外);
4、通过23种的设计模式中的工厂模式,解析xml生产出指定对象。
(二)步骤
建模分两步:
1、以面向对象的编程思想,描述xml资源文件;
2、将xml文件中内容封装进model实体对象。
(二)案例:
创建一个工厂,写好对应的动作和方式,并赋值(填充内容):

public static ConfigModel build() throws Exception {
		return build("config.xml");
	}

	private static ConfigModel build(String xmlpath) throws Exception {
		// TODO Auto-generated method stub
		ConfigModel configModel=new ConfigModel();
		InputStream in = ConfigModelFactory.class.getResourceAsStream(xmlpath);
		SAXReader saxReader=new SAXReader();
		//标签,进行作用域的扩充
		Document doc = saxReader.read(in);
		ActionModel actionModel=null;
		ForwardModel forwardModel=null;
		List<Element> actionEles = doc.selectNodes("/config/action");
		for(Element actionEle : actionEles){
			actionModel=new ActionModel();
			//接下来要往actionModel中填充内容(属性)
			actionModel.setPath(actionEle.attributeValue("path"));
			actionModel.setType(actionEle.attributeValue("type"));
			List<Element> forwordEles = actionEle.selectNodes("forward");
			for (Element forwordEle : forwordEles) {
				forwardModel=new ForwardModel();
				//接下来要往forwardModel中填充内容(属性)
				forwardModel.setName(forwordEle.attributeValue("name"));
				forwardModel.setPath(forwordEle.attributeValue("path"));
				forwardModel.setRedirect(!"false".equals(forwordEle.attributeValue("path")));
				
				actionModel.push(forwardModel);
			}
			configModel.push(actionModel);
		}
		
		return configModel;
	}

下一步,进行输出与打印:

public static void main(String[] args) throws Exception {
		ConfigModel configModel = ConfigModelFactory.build();
		ActionModel actionModel = configModel.pop("/loginAction");//写好所需的路径
		System.out.println(actionModel.getType());
		
		
		ForwardModel forwardModel = actionModel.pop("a");//所需的属性
		System.out.println(forwardModel.getPath()+"    "+forwardModel.isRedirect());
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值