一、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()); } }
结果:
今天就分享到这啦💕💕💕