XML建模

简介: XML建模

一、xml建模简介

XML建模是指使用XML语言进行建模的过程,它通过定义各种标签、元素、属性和数据类型等来描述信息模型。XML建模在Web应用开发、数据交换、文档管理、标准化数据表示以及传输等领域被广泛使用。

二、xml建模的核心思想

xml建模的核心思想就是利用java面对对象的特性,用操作对象的方式来操作xml。

三、xml建模的作用

XML建模的主要目的是用一种可扩展的标记语言来描述结构化数据。相对于其他的结构化数据格式(比如JSON、YAML等),XML更为灵活,能够描述更为复杂的数据关系,而且具有跨平台、独立于语言的特点。另外,XML建模能够使用DTD、XSD、XSLT等技术来实现数据验证、转换和样式定义等功能,这些技术能够提高开发效率和数据质量,并在B2B数据交换中得到广泛应用。

四、在哪运用建模思想呢

XML建模在Web服务、电子商务、企业应用集成、内容管理等领域都得到广泛应用。例如,在Web服务中,XML被用于表示服务的描述和接口,从而提高服务的互操作性;在电子商务中,XML被用于描述商品、订单和支付信息,从而方便不同商家和平台之间的交互;在企业应用集成中,XML被用于描述不同格式和数据结构的数据,从而方便它们的转换和集成。

五、XML建模的基本步骤

XML建模的基本步骤包括:

  1. 设计数据结构和模型:设计所需信息对象和属性关系,明确建立XML模型的目标。
  2. 设计DTD或XSD:用XML语言描述DTD或XSD文档,这些文档定义了XML模型的信息结构和关系,是XML的验证机制基础。
  3. XML文档实例制作:通过DTD或XSD生成符合规范的XML文档实例,实例文件包括XML文本和DTD等文件。
  4. 解析和样式处理:使用XML解析器读取XML文档实例,并执行基于XSLT的样式处理。
  5. 报告和数据传输:对XML文档实例进行数据提取、统计、格式化和打印等操作,并将它们传输到其他应用中。

六、XML建模的优点

1.简单且易于实现,不需要任何特殊的应用程序或工具来使用和编辑XML文件。

2.具有良好的可扩展性,可以方便地添加新的元素或属性。

3.具有强大的描述能力,可以准确地表示数据之间的关系和层次结构。

4.支持多平台和多语言,可以轻松地在所有主流系统和编程语言中使用。

5.可以轻松地与其他Web技术(如CSS和JavaScript)相结合,以创建动态的Web应用程序。

七、xml建模实例

首先,我这边准备了一个config.xml文件

以面向对象的思维建模,来解析上方代码(先看标签,然后再看属性)

1.建forword实体类

package com.ctb.model;
/**
 * forword实体
 * @author biao
 *
 */
public class ForwordModel {
  //forword标签中的三个属性
  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;
  }
}

2.建action实体类

package com.ctb.model;
import java.util.HashMap;
import java.util.Map;
/**
 * action实体
 * @author biao
 *
 */
public class ActionModel {
  private String path;
  private String type;
  private Map<String, ForwordModel> fMap=new HashMap<String, ForwordModel>();//定义一个容器
  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;
  }
  //将forword存储到action model 中的map集合中
  public void push(ForwordModel forwordModel) {
    fMap.put(forwordModel.getName(), forwordModel);
  }
  //查询forword
  public ForwordModel pop(String name) {
    return fMap.get(name);
  }
}

3.建config实体

package com.ctb.model;
import java.util.HashMap;
import java.util.Map;
/**
 * config实体
 * @author biao
 *
 */
public class ConfigModel {
  private Map<String, ActionModel> aMap =new HashMap<String, ActionModel>();//定义容器
  //将action存储到config model 中的map集合中
    public void push(ActionModel actionModel) {
      aMap.put(actionModel.getPath(), actionModel);
    }
    //拿取action
    public ActionModel pop(String path) {
      return aMap.get(path);
    }
}

4.工厂类的编写

package com.ctb.model;
import java.io.InputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
 * 工厂类
 * @author biao
 *
 */
public class ConfigModelFactory {
  //扩大权限
  private static ConfigModel cm = null;
  private static ActionModel am = null;
  private static ForwordModel fm = null;
  public static ConfigModel build(String xmlPath) throws Exception {
    cm = new ConfigModel();
    //io流
    InputStream is = ConfigModelFactory.class.getResourceAsStream(xmlPath);
    SAXReader sr = new SAXReader();
    //读取文件
    Document read = sr.read(is);
    // System.out.print(read.asXML());
    List<Element> actionNode = read.selectNodes("/config/action");
    //遍历action节点
    for (Element actionEle : actionNode) {
      am = new ActionModel();
      //通过实体调用set方法
      am.setPath(actionEle.attributeValue("path"));
      am.setType(actionEle.attributeValue("type"));
      List<Element> forwordNode = actionEle.selectNodes("forward");
      //System.out.println(forwordNode);
      for (Element forwordEle : forwordNode) {
        //System.out.println(forwordEle.asXML());
        fm = new ForwordModel();
        //设置属性值
        fm.setName(forwordEle.attributeValue("name"));
        fm.setPath(forwordEle.attributeValue("path"));
        fm.setRedirect("false".equals(forwordEle.attributeValue("redirect")));
        //将forwordmodel放到actionmodel中
        am.push(fm);
      }
      //将actionmodel放到configmodel中
      cm.push(am);
    }
    return cm;
  }
  public static ConfigModel build() throws Exception{
    return build("config.xml");
  }
  //测试
  public static void main(String[] args) throws Exception {
//     ConfigModelFactory.build();
     ConfigModel configModel = ConfigModelFactory.build();
          ActionModel action = configModel.pop("/loginAction");
          System.out.println(action.getType());
          ForwordModel forwordModel=action.pop("a");
          System.out.println(forwordModel.getPath());
  }
}

结果:

                       

                       今天就分享到这啦💕💕💕


相关文章
|
XML Java 数据格式
一.Xml建模之入门
一.Xml建模之入门
59 1
|
12月前
|
XML 设计模式 开发框架
J2EE(xml建模)
J2EE(xml建模)
52 0
|
XML 存储 设计模式
XML系列(三)之 XML建模
XML系列(三)之 XML建模
|
XML 设计模式 开发框架
J2EE之XML建模(超详细)
J2EE之XML建模(超详细)
47 0
|
XML 存储 JSON
XML建模最详细介绍讲解
XML建模最详细介绍讲解
93 0
|
XML 存储 设计模式
XML建模
XML建模
70 0
|
XML 存储 开发框架
J2EE之XML建模
J2EE之XML建模
41 0
|
12月前
|
XML 存储 Java
XML建模
XML建模
|
11月前
|
XML 存储 设计模式
xml建模
xml建模
49 0
|
11月前
|
XML 存储 数据库
xml建模----详细完整,易懂结合代码分析
xml建模----详细完整,易懂结合代码分析