xml建模
xml建模的核心思想
xml建模的核心思想:它利用了Java面向对象的特性,用操作对象的方式来操作xml
获取config.xml的需求及分析
config.xml的代码块,如图所示:
1、需求及实现步骤:
需求:通过/loginAction获取type的属性值
实现步骤:
1.1、获取xml文件:用类名.Class.getResourceAsStream("/config.xml");
1.2、通过xpath解析获取到所有action标签列表;
1.3、遍历,如果action标签的path属性等于/loginAction,就是action标签;
1.4、找到action,就可以获取到action对应的type属性值;
2、分析:
2.1、config.xml里的config没有属性,但是它有新增action对象,可以通过action path属性找到action对象的行为;
2.2、action对象有属性:path属性、type属性;可以新增forward对象,可以通过forward对象的name属性找到forward对象;
2.3、forward对象有属性:name属性、path属性、redirect属性;forward对象没有属性
本人建议:写xml建模的代码是从里到外----->最开始是写forward的代码到action的代码,再到config的代码
代码:
如下:
创建forwardModel,如图所示:
将forwardModel放入actionModel对象中,可以从forwardModel的name值获取forward,如图所示:
将actionModel放入configModel对象中,可以从actionModel的path值获取action 如图所示:
用工厂模式解决的问题:代码封装,提高代码的复用性
创建一个工厂类,通过xml文件构建对应的模型对象 ,如图所示:
InputStream in = ConfigModelFactory.class.getResourceAsStream(path);
SAXReader sax=new SAXReader();
// /config.xml的内容
Document doc = sax.read(in);
//sax.read(in);这里要抛异常
//把内容填充到configModel对象(doc.asXml)
ConfigModel configModel=new ConfigModel();
ActionModel actionModel=null;
ForwardModel forwardModel=null;
List<Element> actionEle = doc.selectNodes("/config/action");
for (Element actionEles : actionEle) {
actionModel =new ActionModel();
actionModel.setPath(actionEles.attributeValue("path"));
actionModel.setType(actionEles.attributeValue("type"));
//给actionModel中放入forwardModel对象
//拿到dorward标签内容
List<Element> forwardEle = actionEles.selectNodes("forward");
for (Element forwardEles : forwardEle) {
forwardModel =new ForwardModel();
forwardModel.setName(forwardEles.attributeValue("name"));
forwardModel.setPath(forwardEles.attributeValue("path"));
forwardModel.setRedirect(!"false".equals(forwardEles.attributeValue("redirect")));
actionModel.push(forwardModel);
}
configModel.push(actionModel);
}
return configModel;
调用方法 ,如图所示:
运行结果:
总结
使用xml建模后不用在重复去获取xml,不用重复去遍历,不用重复去解析xml了,只要调用写好的方法就可以得到你想要的值
推荐阅读
-
在java中使用dom4j解析xml(示例代码)
-
统一建模语言_动力节点Java学院整理
-
去掉IntelliJ IDEA 中 mybatis 对应的 xml 文件警告的教程图解
-
dom4j创建和解析xml文档的实现方法
-
Python 提取dict转换为xml/json/table并输出的实现代码
-
解析Neatbeans(常见错误) build-impl.xml:305: Compile failed
-
解析web.xml中在Servlet中获取context-param和init-param内的参数
-
c#通过xpath读取xml示例
-
asp.net简单生成XML文件的方法
-
asp.net创建XML文件的方法小结