XML建模

简介: XML建模



一 XML建模是什么?

1.1 概念:

        描述及定义数据和信息的结构、类型、属性及关系,一般涉及三个方面:文档类型定义(DTD)、XML Schema和命名空间。总的来说就是将一些标签及标签中的属性给封装起来,来进行调用获取内容

二,进行封装实体

前言:一定要了解需要建模的XML配置文件的结构,属性及关系,这样会更加提高我们的代码效率,如下图的xml结构我们本需要建模3个class(类)因为要加上一个创建模式(下面的知识点会讲)所以需要建立4个class(类)

注意:一定要注意集合的嵌套关系

分别划为config,action,forward三个标签所以我们需要定三个class,从小(forward)到大创建(config)

forward class代码案例:

  定义的都是一些标签中的属性,以键值对的形式,每个forward中都有着不同属性的name值,所以我们可以根据name获取整条的数据

action class代码案例:

    创建的也是一些action中的一些属性,要定义两个方法压栈,方便在创建模式class中进行压栈及name 因为要根据name值获取整条数据

注意:要创建一个map集合根据键值对去获取指定内容每个标签中都有着不同的属性

action class代码案例:

   发现在config建模类中push压栈的是action建模类 根据不同属性path值获取不同的action标签,图中下面的build方法,是根据在工厂模式类中让所有的建模获取xml不同标签下和属性压栈到工厂模式中,在工厂模式类型返回到根目录config建模中,这样就能在根目录config建模中获取到指定内容。

总之:在建模模式要注意在之间的嵌套关系

三,工厂模式

3.1什么是工厂模式

   工厂模式是一种创建对象的设计模式,它可以将对象的创建过程与使用过程分离,使得对象的创建更加灵活和可扩展。想一想,在我们建立完成xml各标签的class类无法获取xml中的数据(就好比一个空壳),这下就要利用工厂模式各标签的class类去xml文件中获得数据。

工厂模式代码:

package com.LiuBing_text;
import java.io.InputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
 * 工厂模式(Factory)---创建型模式
 * 
 * @author 兵
 *
 */
public class ConfigModelFactory {
  // build 建造
  public static ConFigModel build() throws Exception {
    // selectNodes 获取某一个节点
    // selectSingNode 获取单个节点
    // getText 获取某一个标签的内容
    // attributeValue//获取属性的值
    // 此时的模式装载xml配置文件
    InputStream in = ConfigModelFactory.class.getResourceAsStream("config.xml");
    // 创建所需要model
    ConFigModel conFigModel = new ConFigModel();
    // 创建一个解析器
    SAXReader sr = new SAXReader();
    // 解析xml文件内容
    Document doc = sr.read(in);
    List<Element> actionElements = doc.selectNodes("/config/action");
    for (Element actionElement : actionElements) {
      // 遍历获取action下的所有内容
      // System.out.println(actionElement.asXML());
      // 实列action建模
      ActionModel actionmodel = new ActionModel();
      // actionmodel建模获取xml配置文件action标签中的path及type
      actionmodel.setPath(actionElement.attributeValue("path"));
      actionmodel.setType(actionElement.attributeValue("type"));
      //再继续遍历获取forward
      List<Element> forwards = actionElement.selectNodes("forward");
      for (Element forward : forwards) {
        //实例化forwardModel建模
        ForwardModel forwardmodel= new ForwardModel();
        //forwardModel建模获取xmlforward值
        forwardmodel.setName(forward.attributeValue("name"));
        forwardmodel.setPath(forward.attributeValue("path"));
        forwardmodel.setRedirect(!"false".equals(forward.attributeValue("redirect")));      
        //将forward放进actionmodel
        actionmodel.push(forwardmodel);
      }
      //再将actionmodel放进跟标签建模中
      conFigModel.push(actionmodel);
      }
    return conFigModel;
  }
  public static void main(String[] args) throws Exception {
    ConfigModelFactory.build();
  }
}

  在如代码中,main方法只能在class实现一个,需要将代码写在一个方法中,在调用输出的时候写一个main方法调用build方法即可输出运行结果。但build方法返回值需要返回到ConFigModel类中,这样在ConFigModel类中也就能调用获取指定内容

目录
相关文章
|
XML Java 数据格式
一.Xml建模之入门
一.Xml建模之入门
69 1
|
XML 设计模式 开发框架
J2EE(xml建模)
J2EE(xml建模)
60 0
|
XML 存储 设计模式
XML系列(三)之 XML建模
XML系列(三)之 XML建模
|
XML 设计模式 开发框架
J2EE之XML建模(超详细)
J2EE之XML建模(超详细)
53 0
|
XML 存储 JSON
XML建模最详细介绍讲解
XML建模最详细介绍讲解
98 0
|
XML 存储 设计模式
XML建模
XML建模
74 0
|
XML 存储 开发框架
J2EE之XML建模
J2EE之XML建模
43 0
|
XML 数据采集 JSON
XML建模
XML建模
53 0
|
XML 存储 Java
XML建模
XML建模
|
XML 存储 设计模式
xml建模
xml建模
53 0