一、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建模的基本步骤包括:
-
设计数据结构和模型:设计所需信息对象和属性关系,明确建立XML模型的目标。
-
设计DTD或XSD:用XML语言描述DTD或XSD文档,这些文档定义了XML模型的信息结构和关系,是XML的验证机制基础。
-
XML文档实例制作:通过DTD或XSD生成符合规范的XML文档实例,实例文件包括XML文本和DTD等文件。
-
解析和样式处理:使用XML解析器读取XML文档实例,并执行基于XSLT的样式处理。
-
报告和数据传输:对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());
}
}
结果:
今天就分享到这啦💕💕💕