XML建模

本文探讨了XML建模的核心思想,即通过面向对象的方式来操作XML,以实现资源节约和性能优化。文章通过ConfigModel、ActionModel和ForwardModel等类的建模案例,详细阐述了如何将XML文件中的标签映射为Java对象,并介绍了自定义异常处理,包括异常的定义和测试情况。
摘要由CSDN通过智能技术生成

目录

一、xml建模核心思想

二、xml建模的作用

三、建模案例

ConfigModel类

ActionModel类

自定义异常

ForwardModel类

自定义异常

ConfigFactory类

测试


一、xml建模核心思想

xml建模的核心思想就是利用java面向对象的特性,用操作对象的方式操作xml。

二、xml建模的作用

1、节约资源

2、优化性能

3、更加便捷操作xml文件

三、建模案例

以下方config.xml为例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE config[
	<!ELEMENT config (action*)>
	<!ELEMENT action (forward*)>
	<!ELEMENT forward EMPTY>
	<!ATTLIST action
	  path CDATA #REQUIRED
	  type CDATA #REQUIRED
	>
	<!ATTLIST forward
	  name CDATA #REQUIRED
	  path CDATA #REQUIRED
	  redirect (true|false) "false"
	>
]>
<config>
	<action path="/studentAction" type="org.lisen.mvc.action.StudentAction">
		<forward name="students" path="/students/studentList.jsp" redirect="false"/>
	</action>
</config>
  • 一个标签就是一个对象,在上方xml文件中有三个标签config、action、forward。所以我们需要三个实体类来进行建模

ConfigModel类

在集合中增加ActionModel对象,通过path找到对应的ActionModel对象

package com.zking.mymvc.framework;

import java.util.HashMap;
import java.util.Map;

public class ConfigModel {

	private Map<String, ActionModel> actionMap=new HashMap<String, ActionModel>();
	

	/**
	 * 将ActionModel对象放到map集合
	 * @param forward
	 */
	public void put(ActionModel action) {
		if(actionMap.containsKey(action.getPath())) {
			throw new ActionDuplicateDefinitionException("Action path ="+ action.getPath()+" duplicate definition");
		}
		actionMap.put(action.getPath(), action);
	}
	
	/**
	 * 通过action中的path从map结合中取出对应的action对象 若path填错则抛出自定义异常未找到
	 * @param name
	 * @return
	 */
	public ActionModel find(String path) {
		if(!actionMap.containsKey(path)) {
		throw new ActionNotFoundException("Action path ="+ path +" not found");
	}
		return actionMap.get(path);
	}

	@Override
	public String toString() {
		return "ConfigModel [actionMap=" + actio
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值