使用XML定制Ribbon的一点小前奏(稍微再进一步的理解XML)
定制文档级Ribbon界面的实现思路:
1、excel的文件使用rar+xml的形式保存在本地。
2、用压缩软件打开文件,以规范的格式直接编缉或添加xml文件
3、使用excel文件时,主程序会解析xml文件,根据内容加载数据,包括Ribbon功能区的元素
一、XML是啥
1、XML就是一个小型数据库,可以用文本文件持久化保存数据。
2、XML用文本格式保存数据,使它可以兼容不同平台。
3、有意义的标签使它既保留了扩展性,同时也更易读。
4、XML本身是一个对象,其中的每一个元素也都是对象(DOM),可以映射到表格数据
5、XML还有表达对象之间的关系的能力(别忘了它就是数据库,可以说它也是一个关系型数据库)
6、数据验证技术(schema)保证数据的完整性
和XML有关的技术太多了,一辈子可能也学不完。
二、面向对象的XML
下面的简单示范可以看出普通表格、XML、和使用代码写的“类”有互相转化的能力。
1、excel和xml分别如何表示人类
Name | Gender | Age | Hobby |
刘备 | 男 | 32 | 哭鼻子 |
关羽 | 男 | 30 | 耍大刀 |
张飞 | 男 | 28 | 卖猪肉 |
<Persons>
<Person name="刘备" gender="男" age="32" hobby="哭鼻子"/>
<Person name="关羽" gender="男" age="30" hobby="耍大刀"/>
<Person name="张飞" gender="男" age="28" hobby="卖猪肉"/>
</Persons>
a、每一个Person元素和excel表中的数据行对应。
b、每一个Person元素都有和excel列名对应的属性。
2、使用vba代码表示人类
类模块:Person(实体类)。
Public name As String
Public age As Integer
Public gender As String
Public hobby As String
标准模块:VBPerson。NEW一个人类的具体对象(类的实例),这个对象和excel的行“对应”
(数据库表中的列可以称为“域--Filed”,表中的每一行可以称为“实体--Entity”)
Dim p1 As New Person
p1.name = "刘备"
p1.age =
p1.gender = "男"
p1.hobby = "哭鼻子"
a、excel表格的列名和类中的“变量--字段”(这里没有使用属性,但使用属性更合适)有映射关系,同样的和XML也有对应关系。
b、每New一个Person都对应着excel中的一行,也对应着XML中的一个元素。
注:实体类(modal)没有行为,只用来保存数据。表格中的数据也没有行为,XML定制Ribbon虽然有类似OnAction这样的东东,个人感觉也应该理解为属性,不过这个属性的值对应了回调的方法名。
二、XML中的对象和Ribbon元素之间的关系
Ribbon做为对象的容器,他能容纳的对象种类很多。tab(标签)、group(分组)、menu(菜单按钮)、button(按钮)等。
1、这些对象都可以用XML元素来映射,比如button在XML中可以这样表示
<button id="btn" label="我的按钮">
2、也可以表达对象之间的关系,比如一个group(分组)下有一个menu按钮,menu按钮中有两个button
<group id="CustomGroup" label="自定义分组">
<menu id="CustomMenu">
<button id="btn1" label="按钮一"/>
<button id="btn2" label="按钮二"/>
</menu>
</group>
补充:Composite设计模式
Ribbon中的元素的关系比较符合Composite设计模式。用树状结构表达“容器+子容器+...+对象”这样的复杂结构。
使用XML定制Ribbon的一点小前奏(稍微再进一步的理解XML)的更多相关文章
- BUI Webapp用于项目中的一点小心得
接触BUI也有一段时间,也用在了移动端的项目开发中,总的来说,该框架用起来也挺灵活的,控件可以自由定制,前提是自己能认真地学习该框架的api,因为api里面说的东西比较详细,如果没有仔细看的,可能有些 ...
- 私人定制自己的linux小系统
私人定制自己的linux小系统 一.前言 linux操作系统至1991.10.5号诞生以来,就源其开源性和自由性得到了很多技术大牛的青睐,每个linux爱好者都为其贡献了自己的一份力,不管是在 ...
- 关于win8开发的一点小总结
我今天做画面的时候,发现了一点小问题. 我在xmal文件里面加了一个CheckBox控件,设置IsChecked属性为True,并添加了Checked事件.Checked事件里面有对另外一个TextB ...
- 关于PHP魔术方法__call的一点小发现
好久没有上博客园写文章了,今晚终于有点空了,就来写一下昨天的一点小发现. 我自己所知,C++,Java的面向对象都有多态的特点,而PHP没有,但PHP可以通过继承链方法的重写来实现多态的属性.而魔术方 ...
- net core体系-web应用程序-4net core2.0大白话带你入门-8asp.net core 内置DI容器(DependencyInjection,控制翻转)的一点小理解
asp.net core 内置DI容器的一点小理解 DI容器本质上是一个工厂,负责提供向它请求的类型的实例. .net core内置了一个轻量级的DI容器,方便开发人员面向接口编程和依赖倒置(IO ...
- mycat的schema.xml的个人的一点理解
官方文档里讲的详细的部分的我就不再赘述了,我只是谈谈我自己的理解 刚开始接触mycat,最重要的几个配置文件有server.xml,schema.xml,还有个rule.xml配置文件 具体都是干啥用 ...
- eclipse下java中凝视字体太小和xml中中文字体太小问题解决方法
我们在win7下进行android应用开发.须要搭建对应的开发环境.如今普遍基本上都是eclipse+adt+sdk,在本人搭建完环境后,发现eclipse下.java中的凝视和xml中的中文字体变得 ...
- C与C++在形參的一点小差别
先看一下以下的代码: int fun(a,b) int a; int b; { return 10; } void main(int argc, char ** argv) { fun(10); re ...
- android XMl 解析神奇xstream 六: 把集合list 转化为 XML文档
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
随机推荐
- 【iCore3 双核心板_FPGA】例程五:Signal Tapll实验——逻辑分析仪
实验指导书及代码包下载: http://pan.baidu.com/s/1bnNRfaB iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- str_replace() 用法bug和技巧
语法 str_replace(find,replace,string,count) 参数 描述 find 必需.规定要查找的值. replace 必需.规定替换 find 中的值的值. string ...
- jdk动态代理学习
在jdk的好多底层代码中很多都使用jdk的动态代理,下面就写写简单的代码来look look. 老规矩先上代码: public interface SayDao { public String say ...
- Oracle 10g ORA-01034: ORACLE not available 错误
今天在开发系统的时候,刚开始还好好的,突然就遇到了一个错误 ORA-01034: ORACLE not available 感到莫名其妙.然后排查问题 监听器ok,各项服务ok. 最后解决办法如下: ...
- Linux内核设计第四周——扒开系统调用三层皮
Linux内核设计第四周 ——扒开系统调用三层皮 一.知识点总结 (一).系统调用基础知识 1.用户态和内核态 内核态:在高级别的状态下,代码可以执行特权指令,访问任意的物理地址: 用户态:在相应的低 ...
- zepto源码--核心方法(类数组相关)--学习笔记
从这篇起,在没有介绍到各类插件之前,后面将陆续介绍zepto对外暴露的核心方法.即$.fn={}里面的所有方法的介绍.会配合zepto的API进行介绍. 其实前面已经介绍了几个,如width,heig ...
- git cherry-pick. 如何把已经提交的commit, 从一个分支放到另一个分支
问题 在本地master提交了一个commit(8d85d4bca680a5dbcc3e5cfb3096d18cd510cc9f),如何提交的test_2分之上? 方法 使用cherry-pick 用 ...
- MVC过滤器详解 面向切面编程(AOP)
面向切面编程:Aspect Oriented Programming(AOP),面向切面编程,是一个比较热门的话题.AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个 ...
- Java基础必备 -- 堆栈、引用传值、垃圾回收等
在Java中,对象作为函数参数的传递方式是值传递还是引用传递?String str = "abc" 与 String str = new String("abc&quo ...
- Control Flow
1.重写折半查找,使得在循环内部只执行一次测试 传统的非递归式的折半查找的例子中,while循环语句内部共执行了两次测试,其实只要一次就足够(代价是将更多的测试在循环外执行).重写该函数,使得在循环内 ...