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());
		
		
	}
}

结果:

                        

                        今天就分享到这啦💕💕💕

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值