您的位置:首页 > 其它

.xml建模

2019-05-27 20:56 309 查看

文章目录

什么叫做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());
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: