00:02
啊来接着往后说啊,呃,那其实到现在的为止的话呢,我们整个的这个功能就是围绕着这个登录注册啊,这个功能呢,我们就已经做完了,然后接下来的两个点呢,是我们给大家额外去扩展的两个东西啊,首先呢,第一个我们来给大家去说一下这个X ma啊,是X ma,呃,这个东西的话,我们一直在用,就是我们那个外部的X ma。是不是一直在用啊,对吧,但是呢,可能大家还不知道这个XL到底是做什么事的啊,给大家把这个呃,这个点呢,给大家是补充的说一下,呃,这个X ma呢,我们把它叫成一个可扩展的标记语言啊,就是可扩展的一个标记语言,它也是一个标记语言,那么这个的话大家应该能感受出来,在这个外部的插表中,我们写的是不是都是一个一个标记啊。对吧?诶我们写的都是啊,一个一个的这个标记啊,啊,它就是一个标记语言,然后呢,呃,它是由这个W3C这个组织发布的,然后呢,目前推荐遵守的是这个2000年发布的这个X秒1.0的这个规范,那么其实这个东西呢,我们在这里面也能体现出来,在最上面是不是有这个1.0的这个规范啊,对吧,也能体现出来的啊啊呃,XM的这个使命呢,就是以一个统一的格式,然后呢,组织一些有关系的数据,为不同平台下的应用的程序进行一个服务,说白了这个XM是干嘛的呢?其实它本质上呢,是用来传输和这个存储数据的。
01:31
能明白吧,本质上这个XL是用来传输或者是这个存储数据的,但是现在我们对于这个XL更多的一个用法是什么呀?配置框架里面的配置,像以前的话,这个XM我们确实是要做一些什么,就是结构化的这个数据啊,就是有关系的这种数据的一个传输的,能明白这个意思吧?啊,那么接下来呢,就给大家去说一下这个xma具体的一个用途,呃,现在我们用的最多的就是这个配置文件了,像我们Java web里面,我们用的这个web的插L,像大家这个C3P0里面,我们用的这个C3P0拷的插L,以及我们后面在框架里面我们都会用到一个插L文件啊,就是我们这个XL文件都是来进行一个配置的,那么它里面呢,我们就要去配置出一些这个数据来,其实啊,也可以认为它是用来存储数据的,明白吧,啊呃,那么另外一个呢,它是作为一个什么数据传输的,那么也就是我们的这个数据的一个交换格式,能明白吧,比如说像我们在这个adjust里面可以去用。
02:32
它然后呢,Web service里面呢,我们也可以使用它来进行这个数据的一个交换啊呃,然后呢,数据存储的话,就是保存我们这个关系型的一个这个数据,注意一定是有这有关系的这种数据才能进行保存啊呃,然后呢,接下来我们说一下这个XL的一个什么基本的一个构成,就是首先呢,它必须得有一个XL的生理,那么这个生理的话,我们一直都是有的,像XL里面的这个东西,我们其实是可以随便写的,这些标记呢,它没有预定一行,都是你自己来去写的,你想写什么就写什么。
03:07
能听懂吧,但是啊,大家需要注意呃,如果说像我们这个外B插秒中呢,因为我把这个格式化一下哈,Reflect,然后呢,Source里面呢,有一个format格式化一下以后呢,大家能看到在我这个XL里面,除了你这个基本的声明之外呢,它还有一些什么,引入了一些文件,比如说这地方引入了一个,引入了一个什么东西呢?叫做XSD文件,这个文件呢,是作为一个XM文件的一个约束文件然存在的,它里面呢,约束一下你这个XM文件中能编写哪些标记。就是它里面声明过什么,定义过什么,你这里面才能写什么,听懂了吧,假如说我的一个XL文件没有这些声明,就是没有引入什么X文XXD文件,或者说我们还有一个叫做什么DTD文件,没有入这些东西的话,这里面你随便写,你想写什么标签就写什么标签,它是没有任何要求的,能理能听懂这个意思吧,但是从这个结构上面来讲的话,它必须得有一个根源素,而且只能有一个根元素,然后是里面的话,就是它什么具体的一个子元素了,那么大家可以看一下,像这个student,然后呢,每一个student student里面呢,又有name,又有真的,又有age,对吧,像这种我们是可以直接把它写出来。
04:27
啊,这是我们的一个基本的结构,然后它的这个语法的话,就是我们刚才说过的第一个由这个XL声明来构成的,比如说指定一下你的版本对吧,指定一下你的这个字符集啊,还有一个东西叫做什么C点塔,而这个C点塔呢,就是作为一个特殊字符来去使用的,比如说你想在这个X闹钟呢,去写一些特殊字符啊,比如说像写一些这个加括号啥的,我就想把它当成一个普通的字符串,那么你直接写出来以后,它肯定是报错的,那我们就可以使用这个C塔来去表示它啊,他会把这个里面的内容呢,原封不动的给你输出出来,这个一会我可以给你演示一下的。
05:06
明白了吧,好,然后这个语法规则的话呢,就更简单了。哎,这是怎么了?好,我们来看他的语法规则就更简单了,这个声明呢,要么不写,要写就写在第一行,并且前面没有任何其他字符,这个大家一定要注意,就像这个东西,要么你不要去写它,如果你写它呢,就一定要写到第一行,并且前面还不能有东西,如果你有点东西它就报错,看到了吧,诶,有点东西他就报错,说错了,这个东西一定要注意啊,要么你就不要写,要写你就一定要写到第一行,并且前面不能有任何东西啊,这是他的一个基本的要求。呃,还有一个就是什么呀,只能有一个跟标签,就是刚才说过的标签,必须以正确结束,就是你有一个开始标签,你必须得有一个结束的标签。啊,这也是他的要求,标签不能交叉进行嵌套,什么叫做交叉进行嵌套呢?我给你写一个,就像这东西你写成A啊,A里面你写个B这种行不行啊,这是什么正常的一个嵌套,你要说写成什么呀,这种呢叫做交叉嵌考,这是不允许的,理解吧,哎,这是不允许的啊,你不能这么去写的,然后呢,它是严格区分这个大小写的啊,严格区分大小写,如果是你一个属性的话呢,必须得有值,且属性必须要有加双引号啊,加入这个引号,单引号双引号啊,标签不能以数字开头,然后呢,注释也不能进行嵌考,这都是它的一些什么基本的语法,然后呢,我们大概了解一下就行,因为现在我们很少会自己去编写一个xman文件,我们都是使用到框架里面的这种X文件,而且像框架里面或者说我们Java外的这种X文件,你想写什么,想写什么呢,人家已经提前都。
06:52
帮你在这里面给你定义好了,你也不能随便写,比如说我在这里面,我随便写个A能行吗?随便写个A这能行吗?不行,因为什么,因为这个XSD文件就约束了你不能写它。
07:05
听懂了吧,诶,所以说我们在实际上写的时候呢,我们是严格的遵守他的这个要求就行了,而且它有一定的提示啊,这个大家需要知道一下啊,呃,那么我们主要想给大家讲一个什么话题呢?就是给大家说说一下这个XM的解析啊,这个还是相对来说比较重要一点的,大家就来想一下,我现在配置到我Java web里面的这个X文件,将来我的Java web是不是得去把它解析出来啊。对吧,就按照我们讲课的那个过程,我先找到你的URL拍照,再找到它,再找到它,最后我是才能找到它,找到它以后呢,我是要根据它进行反射,然后创建对象了吧,那么我就得必须要解析到你的每一个标签,拿到你标签里面的具体的内容,这样我才能去做我后续的一个操作,是不是这样子的,OK,好,那么接下来呢,我们就来模拟这样的一个过程,我自己去做一个解析。对吧,我们自己编写一个X文件,自己来做一个简单的解析,那么这个解析方式的话呢,我们比较多有这个DOM for j的这种解析,还有这个萨克斯的这种解析,它是还是比较多的,那么像这种解析对比就是哪种比较好啊,我们简单的说一下,最常用的就是这个do forg的这种解析,以及这个萨克斯的这种解析,还有一种就是什么叉pass解析啊,我们要给它列出来,大家了解一下就行啊,因为我们也很少会去解析它了。
08:25
框架里面都会帮我们自动解析的啊,但是我们得知道有这样的一个东西,呃,如果是盗分线的解析的话,它会一次性的把我的整个XM文件全部都加载进去,而且帮你生成一个倒数,就相当于我们那个HTML,那个document是一个道理的,生成一个do数,然后呢,你去解析它的每一个节点,那么这样的话呢,它就要求我们内存消耗比较大,因为你要一次性把整个S段文件都解析到内存里面,并且呢,这个倒数呢,会永远就常驻在你的内存里面,所以说呢,它这个是啊,对内存的要求比较大,但是呢,它有一个好处就是什么呀,你解析就是你读取一次,那么接下来每一次你都可以直接从内存里面去读取,所以说呢,第一次比较慢,后续就比较快了,理解吧,诶后续就比较快了啊,而像这种X呃萨克这种解析的,它是一行一行的去解析,我解析一行对吧,我就是我读取一行,我就把这一行的加载了内存中,然后它是一个什么顺序解析的,然后呢,已经解。
09:25
过的数据,如果说我们没有主动的把它保存下来,那么你下一次获取的时候,你就得重新去解析了,因为它不会给你保留到内存中,除非说你通过一个变量把它永久性的保存下来啊,这是它们之间的一个区别,但是这种解析的话,它就是内存占用率比较低,因为我只会一行一行的去解析你,我不会把整个文档都给你加载进去。理解了吧,好,这个大家了解一下就行了啊好,那么接下来呢,我们就自己尝试的去写一个这个X文件,然后呢,自己尝试的去做一个解析啊,来一起来看一下。
我来说两句