XML建模

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: XML建模

什么是xml建模?


XML建模是指使用XML来描述和组织数据结构的过程。XML是一种通用的标记语言,它可以用于描述各种类型的数据,如文本、图像、音频和视频等。在XML中,可以定义元素、属性、命名空间等概念来组织数据,从而形成有层次结构的数据模型。


XML建模主要包括两个方面:DTD和XML Schema。DTD是一种简单的文本文件,用于定义XML文档中允许出现的元素、属性和实体等,它是XML建模的一种基本方式。XML Schema是一种更为严格和功能更强大的建模方式,它基于XML语法,提供了一组结构定义和数据类型定义,用于强制检查XML文档的结构和数据类型。

XML建模的优点


可扩展性和灵活性:XML的结构可以根据需要进行扩展和修改,以适应不同的应用场景。


易于处理和解析:XML的结构清晰明了,易于程序处理和解析,可以有效地进行数据交换和存储。


通用性和互操作性:XML是一种标准的、平台无关的数据格式,可以用于不同的应用程序、系统和平台之间进行数据交换和共享。

XML建模的作用


XML建模的主要作用是用于存储、传输和表示数据。它提供了一种通用的、可扩展的数据格式,可以用于描述各种类型的数据,如文本、图像、音频和视频等。通过定义标签和属性,XML可以将数据结构化,便于程序处理和解析。


XML建模还可以用于数据交换和互操作性,因为XML是一种标准的、平台无关的数据格式。不同的应用程序、系统和平台都可以使用XML来交换数据,从而实现数据的共享和集成。


此外,XML建模还可以用于Web开发中的数据传输和表示。许多Web服务都使用XML作为数据格式进行通信,例如SOAP和RESTful服务等。同时,XML也是许多Web页面中用于描述内容和样式的标记语言的基础,如HTML、SVG和MathML等。


一.xml建模的思路

1、分析需要被建模的文件中有几个对象

2、每个对象拥有的行为(比如增删改查)以及属性

3、定义对象从小到大(从里到外)

4、通过23种的设计模式中的工厂模式,解析xml生产出指定对象

5.好处:提高代码的复用性


二.xml建模应用

2.1XML建模应用方式


XML建模广泛应用于各种数据交换和存储场景中,其应用方式主要包括以下几种:


数据交换:XML建模可以用于不同系统和应用程序之间进行数据交换和传输,以实现数据的统一格式和结构。其应用范围涵盖了各种行业、领域和应用场景,如电子商务、金融服务、医疗保健、制造业等。


数据存储:XML建模可以用于将数据存储到XML文件或数据库中,以实现数据的持久化和管理。开发人员可以使用XML建模定义数据模型和存储格式,以便于后续的数据访问、查询和分析。


应用集成:XML建模可以用于不同应用程序和系统之间进行集成,以实现数据的共享和协同处理。其应用范围涵盖了各种企业应用,如ERP、CRM、SCM等。


Web服务:XML建模可以用于描述Web服务中的数据格式和交换协议,以实现不同Web服务之间的互操作和集成。其应用范围涵盖了各种Web应用和互联网服务,如电子邮件、电子商务、社交网络等。


总之,XML建模的应用方式可以根据具体的场景和需求进行灵活地调整和定制,以实现最佳的数据交换和存储效果。


XML建模可以采用面向对象方式来描述数据模型。在面向对象方式中,可以使用XML元素来表示类,使用XML属性来表示类的属性,使用XML子元素来表示类的关系。


以config.xml为例子:



面向对象思考的步骤:


1.   在configModel中添加actionModel,就要有个容器来装载actionModel,又因为axtionModel是唯一值,所有这个容器就为 (Map集合);

2.   actionModel中添加forwordModel,用Map容器来装载;

3.   在actionModel中还有属性 path,type;

4.   在forwordModel中有属性 name,path,redirect ;


所有这里需要注意实现时从小到大(从里到外)

这里的实现顺序为 forwordModel----actionModel----configModel---ConfigmodelFactory

ConfigmodelFactory 包为工厂模式


forwordModel包:

package com.liaozzhixiang.Model;
public class ForwardModel {
  private String name;
  private String path;
  private boolean redirect;
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getPath() {
    return path;
  }
  public void setPath(String path) {
    this.path = path;
  }
  public boolean isRedirect() {
    return redirect;
  }
  public void setRedirect(boolean redirect) {
    this.redirect = redirect;
  }
}



actionModel:

package com.liaozzhixiang.Model;
import java.util.HashMap;
import java.util.Map;
public class ActionModel {
  private String path;
  private String type;
  private Map<String, ForwardModel> fmap= new HashMap<String, ForwardModel>();
  public String getPath() {
    return path;
  }
  public void setPath(String path) {
    this.path = path;
  }
  public String getType() {
    return type;
  }
  public void setType(String type) {
    this.type = type;
  }
  //压栈
  public void push(ForwardModel ForwardModel) {
    fmap.put(ForwardModel.getName(), ForwardModel); 
  }
  //弹栈
  public ForwardModel pop(String name) {
    return fmap.get(name);
  }
}


configModel包:

package com.liaozzhixiang.Model;
import java.util.HashMap;
import java.util.Map;
public class Configmodel {
  private Map<String, ActionModel> amap = new HashMap<String, ActionModel>();
  public  void push(ActionModel ActionModel) {
    amap.put(ActionModel.getPath(), ActionModel);
  }
  //压栈
  public ActionModel pop(String path) {
    return amap.get(path);
  }
  public static void main(String[] args) throws Exception {
    Configmodel configmodel= ConfigmodelFactory.build();
    ActionModel actionModel = configmodel.pop("/loginAction");
    ForwardModel forwardModel = actionModel.pop("success");
    System.out.println(forwardModel.getPath());
  }
}


ConfigmodelFactory 包

package com.liaozzhixiang.Model;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
 * 知识点  23种的设计模式中的工厂模式
 * @author Administrator
 *
 */
public class ConfigmodelFactory {
  /**
   * 创建并构建 ConfigModel 对象
   * @return Configmodel 配置模型对象
   * @throws Exception 执行过程中抛出的异常
   */
  public static Configmodel build() throws Exception {
    Configmodel configmodel = new Configmodel();
    // 获取 config.xml 文件的输入流
    InputStream in = ConfigmodelFactory.class.getResourceAsStream("/config.xml");
    // 创建 XML 解析器 SAXReader 
    SAXReader sr = new SAXReader();
    // 使用 SAXReader 解析 XML 文件,得到 Document 对象
    Document doc = sr.read(in);
    // 获取所有 action 元素的列表,并依次处理
    List<Element> actioneles = doc.selectNodes("/config/action");
    for (Element actionele : actioneles) {
      // 创建 ActionModel 
      ActionModel actionModel = new ActionModel();
      // 获取 action 元素的 path 和 type 属性,并设置到 ActionModel 对象中
      actionModel.setPath(actionele.attributeValue("path"));
      actionModel.setType(actionele.attributeValue("type"));
      // 获取当前 action 元素下的所有 forward 元素的列表,并依次处理
      List<Element> forwardEles = actionele.selectNodes("forward");
      for (Element forwardEle : forwardEles) {
        // 创建ForwardModel 
        ForwardModel forwardmodel = new ForwardModel();
        // 获取 forward 元素的 name 和 path 属性,并设置到 ForwardModel 对象中
        forwardmodel.setName(forwardEle.attributeValue("name"));
        forwardmodel.setPath(forwardEle.attributeValue("path"));
        // 设置 ForwardModel 对象的 redirect 属性
        forwardmodel.setRedirect(!"false".equals(forwardEle.attributeValue("redirect")));
        // 将 ForwardModel 对象添加到 ActionModel 对象的 forwardModels 列表中
        actionModel.push(forwardmodel);
      }
      // 将 ActionModel 对象添加到 Configmodel 对象的 actionModels 列表中
      configmodel.push(actionModel);
    }
    // 返回构建好的 Configmodel 对象
    return configmodel;
  }
  public static void main(String[] args) throws Exception {
    ConfigmodelFactory.build();
  }
}



在Configmodel中解析并且拿到xml生产出指定对象:

三.工厂模式

3.1什么是工厂模式


工厂模式是设计模式中的一种,它属于创建型模式。


工厂模式通过工厂类来创建对象,并将对象的创建过程封装在工厂类中,从而将对象的创建与使用分离,提高了系统的灵活性和可维护性。


工厂模式有三种常见的实现方式:


简单工厂模式:通过一个 Factory 类来创建对象,根据不同的参数返回不同的对象实例。


工厂方法模式:定义一个抽象的工厂类和多个具体的工厂类,每个具体的工厂类负责创建指定的产品对象。


抽象工厂模式:定义一个抽象的工厂类和多个具体的工厂类,每个具体工厂类负责创建一组相关的产品对象。


上面的代码使用的是:简单工厂模式

3.2工厂模式优缺点


工厂模式的优点:


工厂模式通过封装对象的创建过程,将对象的创建和使用解耦,提高了系统的灵活性和可维护性。


工厂模式可以通过配置或其他方式动态地改变对象的创建方式,使系统具有更高的可定制性和可扩展性。


工厂模式可以屏蔽具体产品类的实现细节,降低了客户端与具体产品类之间的耦合度,使系统更加可靠稳定。


工厂模式可以通过统一的接口来创建不同类别的产品对象,使客户端使用起来更加方便和简单。


工厂模式的缺点:


工厂模式增加了额外的开销,需要增加工厂类和产品类的数量和复杂度,不利于系统的维护和管理。


工厂模式增加了额外的抽象层,降低了系统的效率和性能,特别是在创建大量对象时。


工厂模式需要对不同的产品类进行分类和管理,增加了系统的复杂度和难度,尤其是在需要创建的产品类型较多的情况下。


总的来说,工厂模式的优点在于它能够提高系统的灵活性、可维护性和可扩展性,缺点在于它会增加系统的复杂度和开销,需要根据具体的情况进行选择和应用。

目录
相关文章
|
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建模最详细介绍讲解
99 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建模
54 0