欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

xml建模

程序员文章站 2022-06-07 14:14:08
...

xml建模的核心思想

xml建模的核心思想:它利用了Java面向对象的特性,用操作对象的方式来操作xml

获取config.xml的需求及分析

config.xml的代码块,如图所示:
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,如图所示:

xml建模

将forwardModel放入actionModel对象中,可以从forwardModel的name值获取forward,如图所示:
xml建模
将actionModel放入configModel对象中,可以从actionModel的path值获取action 如图所示:
xml建模
用工厂模式解决的问题:代码封装,提高代码的复用性

创建一个工厂类,通过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建模后不用在重复去获取xml,不用重复去遍历,不用重复去解析xml了,只要调用写好的方法就可以得到你想要的值