00:00
接下来咱们就说今天的第二大块内容啊,叫解析查没。就是说咱们现在做一个插面文件里边呢,保存了一些数据。保存了数据,那咱们得学着把这些数据拿到咱们的Java程序中进行使用,对吧?这是咱们的最终目的啊。这个插面文件到底怎么去解析,接下来咱就要学这个事儿。首先第一个事儿,要知道解析XM文件。一共有共有四种方式。四种方式。分别。第一种为。Do。解析第二种sax解析。第三种,Go。谢谢。第四种叫做盗墓后街。谢谢,一共四种方式。哎,四种方式。简单的给大家介绍一下他他们的四个优缺点啊,就是大概四个人长什么样。
01:06
第一种。首先盗墓解析啊。先说账目解析。啊,这个do解析,哎,在写之前还得补一句。前两种方法,前两种属于基础方法。就是这两种解析方式啊,属于最基本的最基本的啊。是官方提供的。官方提供的与官方提供。啊,怎么说呢。的与平台无关的解析方式。这是第一句话。OK。而后两种。
02:02
属于扩展方法。属于扩展方法是在他们是在基础。的方法。呃,基础的方法之上是吧。之上扩展出来的。只适用于。适用。只适用。一加二平台。OK。后两种啊,这两种只适合加入平台,这不写着了。现在很好记呀,后两种是不是都带勾啊?Java吗?是吧,而前两种是基础的方式啊基础的方式。好,那咱们这四种方式呢,都给大家简单的介绍一下啊介绍一下。首先,第一种倒方式解析。它是怎么解析的呢?
03:03
它是这样的,它会把。Do解析的原理。是在。是解析叉L的时候,把文档中。的所有元素。按照其。出现的。层次关系。在内存中。构造出一个树状结构。呃,内存中构造出。树状结构树形结构。树形结构。啥意思呢?其实啊,你看一个插面文件,它就可以做成一个数的。啊,咱就把之前的打开。哪个?那就第一个吧,这大舅二舅这个是吧,你看啊,首先一个是大树。
04:00
来,我就不画形象了啊,一根树干是不是根节点啊?对吧,就这个东西可以换成一个树结构啊好,这个树干呢,里边这个这个family就是这个树干里边是不是有三个亲戚啊,所以它会长出三根枝。能理解。OK吧,然后其中一根针里边是不是还有三个属性啊,那这根针上是不是就开花出三根啊。OK。那第二个二老舅,二舅的话是不是也有姓名,有年龄和有工作呀,老姑是不是也这样的?好,是不是一个树状结构啊。明白啥意思吗?这个盗方式啊,它就是会把叉。按照出现的层次关系。形成一个树状结构。这是它的一个特色啊,它的一个特色。呃,这块写个大点吧。分层次哈。
05:00
第二点,DOM的优点。就是可以便利和修改节点的内容。就是说想改什么地儿,他就能改,他就能改。等会儿知道有的别的解决方式啊,是不可以修改的。放在这儿。缺点呢?缺点是内存,内存压力较大。内存压力加大。解析速度略慢啊,解析速,别说速度了,解析。小麦是吧。解析较慢,为什么它内存压力大,能想象到吗?因为每读一个插面文件,它是不是框框搞一个大树出来啊。哎,读一个一根树,读一个一根树,这个构建数的过程在哪构建呢?内存中,所以内存压力大。OK吧,这是第一种道解析的方式啊。第二种,Sax方式。
06:01
它是呢,是一种。插谬解析的替代方法。替代方法。哎,解析哈。在不在?是一种插面的替代方法。他呢,相比较之前啊,相比较相对比。相对比盗墓方式。那么sax。是一种速度更快。更有效。更有效的,呃的方法啊。比如说sax是不是比这种方式要快很多啊,哎,它要快啊。OK。它呢,它的特点,它的特点,哎呀有快的话,那咱们就用这个呗。是吧,其实也不一定用这个,为什么呢,因为。
07:00
啊,这种方式不能修改节点内容。不能修改节点内容啥意思,就是说里边这个保镖你想给他改成。呃,改成经理。改不了。他只能往出拿,改是改不了的。这是这种方式。OK啊,然后呢,第三种方式叫勾到是吧。不知道,这种方式用的非常非常少哈。解析。它的第一个特色。他仅使用仅仅,仅仅。使用具体的类。仅使用具体的类,而不用接口。而不用接口。不用接口,它会产生一个什么问题呢?要不灵活。哎,它不灵活。这是它的一个特色。
08:00
他的特色这个呢,用的非常少啊,就介绍到这就可以了。太不灵活。然后最后一种咱们服贴。解析。他呢?是。勾的。一种智能的分支。合并了。许多超出基本XL文档。表示的功能,文档的功能。功能。合并了许多超出基本面的这个插面文档的一个功能。非常非常啊,他他这种方式是咱们重点要学习的,把它勾上。哎,红色。咱们学习的就是这种方式。
09:00
啊,他呢,比如说非常著名的。著名的框架底层框架。Har night har night就使用到后接解析啊。来解析。啊,这是它的一个特色。它的一个特色。到腹肌它是智能的啊,它是智能的。啊,相比较他们四种方式啊,他们四种方式咱们性能排下排一下先后顺序啊。是这样的,到我们后期。性能最高。性能最高,其次。是。呃,Sax。嗯,而这个中间这个do和go do。表现不好,我记得原先这个do和勾它那个有一篇文章做了一个性能测试。解析十兆的。
10:02
的XM文件。就内存溢出了。你出了。十杠啊十杠。写写中文吧。十兆大小啊。的插面文件就内存溢出了,所以呢,咱们首选是不是,而且这个东西啊,速度也挺快,但是咋怎么着。他不能修改是吧,所以肯定优选到我们投进。到附近。啊,这些文字性的东西呢,大概看一看,了解一下就好啊,就记住有四种方式就好了。呃,这两种中间这个。这种和这种一三是吧。不好啊,不用。咱们都不用。好了,说了这么多理论呢,直接咱们看代码了,做一个插面文件开始解析啊。来。
11:01
搞一个插面文件,咱们就要次啊。双面文件。下一步。四。里边咱自己创建点内容吧。比如说写一个。Students。Student。STOTENT。ID。啊,一号。叫啥名呢?叫。科比,再来一个年龄。比如他的年龄是多少呢?这个这个瞎蒙一个吧,三八。这一个吧,再来一个。二号。好呢。库里是吧?30。OK,咱就先搞一个简单的,里边是不是就有两个同学啊。
12:00
来,咱把这个东西解析一下,解析一下。好,建立一个类插面包类名测试插面下划线一啊测试插面一点。好嘞,开始写咱们的解析代码,咱们这里边用什么方式解析呢?使用倒后接,刚才我已经说了是吧,使用这种方式。那这种方式。大么?解析。需要。需要引包啦。和咱们数据库是一样的,想使用到后接解析的方法,必须把一包引上来,嗯,给它添加进来,添加。OK,现在呢,我就开始解析了啊,开始解析先写中文解析步骤吧,先写中文第一步干啥?第一步,加载叉ma。文件到JVM中。
13:04
形成数据流。形成数据流。第二步,加载完成之后。哎,先别写吧。边写边说哈,怎么加载呢,当前类。加载了GM。点class.get class。Loser。对吧。得到resource元。作为一个数据流。里边扔我这个文件,你看我这个所有的文件是放在SC下边了。对吧,我要加载就是碳四啊。所以这里边写test特四点叉。返回input input stream。年报。那么也就是说这句话执行完成啥意思啊,他是把这个文件里边全部的内容是不是扔到这个流里边了。
14:05
啊,就这意思,也就是说这个流里边装着整个文件的内容。好,这是第一句,第二,第二句咱们应该干嘛了?创建解析对象。解析对象。这个非常简单啊,就是a reader。Rider。咱就叫叫啥呢,叫叫叫sax啊另一个。好看我这个sax这个读取类在哪个包下。是不是道负阶啊,哎,倒四勾道负阶是吧,好在这个方向啊,不要认为它是SAS,这种解析方式是它道负阶是啥来着。是对他们的一个智能的一个升级是吧,所以把里边好的东西啊,都封装到我们到空间里了。所以解析对象为它。对象有了第三步该干嘛了呢?
15:05
获得。整个文档对象就是文档对象啊。文档对象,也就是说干嘛呢,就是整个。XM文件。怎么获得,怎么获得的sax通过这个解析对解析对象。这个嘛,直接进行一个读取,对的。然后看这个对第三个方法里边什么参数啊。是不是input吗?而我上面这个流是不是也是input吗?OK,就它啊,把上面这个流is扔进去,那么它返回是个什么值呢?先给他抛个异常,我不我这块我不抓了啊,我怕这个代码结构乱,大家看不清。直接上去。别糟,糟了,直接全抓。行吧。
16:00
好,然后拿上来,他返回的一个啥玩意儿。Document对吧,Document,咱这个doc。那这个document是个什么鬼呢?整个文件,整个文件就是这个doc。好吧,也就是说这句话干嘛的。在后边补补补一句。将。数据流。转换成。一个对象。什么对象文档对象。将数据流,这不数据流吗?哎,通过这种方式转成了一个对象了。引爆。这里边看到了有几种包了吗?是不是刀门的这个类啊,是不是有三个包啊。应该引哪个?那肯定是第一个嘛,盗墓负街的嘛,是吧。到负接的啊,这个异常删了。OK,这是第三步,搞定第四步。
17:02
第四步干嘛呢?整个文档已经得到了,就整个这个玩意儿已经搞到手了,接下来我是不是一层一层读取啊,首先读取的就是咱们的。叫什么?根节点叫做根。树干先读树干才能读里边的分支,OK,先获得这个根啊,第四步就是获得根元素。根元素。咋获得呢?Easy文档对象doc直接get跟。盖跟这个根不是根啊。加编程中的根一般都指成叫root root。叫根,然后这个element叫对象或者叫元素是吧,这就是获得根元素。谁获得的整个文档获得根元素?
18:03
好,返回一个什么东西呢?鼠标拿上来返回一个什么东西。是不是就要元素啊?哎,返回一个元素啊,艾问咱起一个什么变量名呢?大家这个方便记忆哈,Root。Root就是根的意思。或者说你叫根也行,哥根是吧。好引包这个里边看多少个。看了。六个是吧,哪个。是不是就倒负街啊?啊,第一个。啊,都是道接的是吧。好了,那么根元素现在已经获得了,看好了啊。Root。这个要跟吧,这个跟对比下来,代码放这边。这个root就这个root啊,相当于啥,就是这个斯。OK,就是根,然后呢,根里边是不是有子节点,一个学生两个学生啊。
19:06
看好了。跟。点。四。埃斯,你看元素,元素啥意思啊?是不是好多元素啊?然后呢,鼠标拿上来,看他返回个什么东西,是个集合。List。引一下包。这个肯定是啥呀。肯定是U的是吧。好嘞,来,我也不知道你这意思啥意思呀,打印啊。点3X。List size。好来来运行一下。打印的结果是几呢?是2OK,知道什么是二吗?一个子两个子OK吧。是不是就是根节点下是不是有两个子节点啊。说明咱们的解析是通过了,这就是这个意思啊啊这步干嘛呢,第五步获得。
20:06
获,获得根元素下的所有子。元素或者说子节点是吧。所有,记住,这是所有。返回一个集合,这个集合里边装的全都是紫元素。是不是两个好,那么咱们的第一段程序呢,就写在这儿了,一共这么五步,这五步其实。还是挺好理解的啊。
我来说两句