00:00
嗯,最后一个这个知识点啊,叫做叉啊。XPATH。X plus。这个是什么意思呢,其实这个呀,X。X就是插面的意思。插面这个文件,Pass这个单词是叫。路径的意思是吧,它俩合起来,那么这个东西是干嘛的呢?它是一门叉,Pass。Path是一门在XL文档中。快速查找信息的方式。在插面文档中。快速。快速查找信息的一种方式啊。哎,可以理解为是一种技术是吧。啊,之前咱们想访问插面文件中的某一个节点,咱们应该怎么访问啊?
01:04
单纯的。使用盗fo接访问。节点时。访问节点时,需要一层一层的处理。对吧,看一下咱们刚才之前写的这个太一代码。是不是需要一层再一层啊,那如果层级比较多的话,是不是接着往下边搞啊。哎,所以这块其实还是很麻烦的,非常麻烦啊。那么这个还是这个,这这个技术人员看到了这块的一个弊端,所以他想了一个办法来取代了这种这种便利。哎,这个这个办法就叫。好,咱们来接着往后说啊,现在呃,如果。
02:01
有了叉PA。访问层级的节点。就异常的简单。就简单了啊,就简单了。OK,咱们话不多说,直接上代码哈,那么使用叉plus。叉需要银包。又来了这个包叫他。找他。叫这个鬼。咱们弄上来试一试啊。把这个账搞过来。放在咱们的项目中。添加。好了,添加上来了是吧,两个包啊。好,然后呢,咱们来第三个叉,然后这个是test叉L杠三。
03:05
方法啊,那咱们要解析谁呢?咱们我创建一个创建一个啊,创建一个五插面文件。好,这个里边我想想啊,咱们做的稍稍。稍稍多一点东西啊,要不然看不出来效果。Student。加个S吧。复数S。好,写个student。Name。Name。A。呃,瞎写了啊A11。
04:01
三个啊,AB22C33。好,不仅仅有学生,还有禽兽是吧,啊禽兽这里边这个咱也别整太复杂了啊,也就是内幕和年龄啊。啊,复制一下。然后这个就叫D哈四四。那么禽兽也来两个吧。啊,禽兽在一起啊,这个叫E是吧五。行了,是这个我创建的这个学生里边是不是有三个学生两个禽兽啊。来,我开始对这它进行一个解析啊,咱们再写一遍这个代码,首先呢是当前这个类。点class点类加载器。Class。老子啊。Get results。TEST5点没。
05:00
Input stream。你。Put STEM。Is sax reader。Sax直接读取。将is扔进去,返回个啥?Document是吧,错了。引包。好,然后呢。哪错了?啊,泡一茶哈。T ROE。好,整个文档拿到了吧,文档拿到了之后拿什么了。跟节点是吧。Element。红包。哎,都是盗墓后街的。好,现在根节点拿到了,这个根节点拿到的话,我这五整哪去了。
06:05
哎呀,这回没运行是吧,要运行拿不着是吧。啊,这个五啊,应该在S2下啊。哎,他们应该放在一起的是吧。啊,打开。嗯,咱们现在拿到这个根啊,是谁啊,叫特斯是吧,好,现在呢,我想拿到这三个同学。现在我想拿到这三个同学。如果使用之前的方式,是不是就是root什么什么list,然后错误循环啊。哎,其实很麻烦啊,接下来咱们用新的方式,新的方式想要获得里边所有的学生。非常简单。这么搞。点select。No,你看这个单词什么意思啊?根里边找啥呢?选择或者说查找。节点node叫节点,是不思啊,就是查找一些节点。
07:05
那这一些节点里边放匹配表达式。比如说假设啊,有点类似于咱们这个玩意儿,比如说这个东西有点类似于模糊匹配是吧,而咱们现在这个我只是类似啊,并不是这么写的,我想找学生的话,我想找学生。对吧,我找学生,或者说我要找禽兽。学生,直接写,哎,我去。直接选student。这样呢,他们返回的这个list list上。这个list,然后里边写泛型哈。OKOK。引报。好了,咱们把这个list打印一下吧。打印一下。list.for each。S。System。S。
08:01
好了,来看一看拿到的是不是学生是吧?运行。不是点激活这个类啊。讨厌。是不是三个。哎,三个学生吧,哎,里边的内容怎么拿呀。再往里边弄啊,等会儿咱们再说啊,现在能拿到学生了吧,哎,能拿到学生了。这多好啊,对吧,如果说我想拿这个子根节点下边的禽兽呢,你直接把这个单词一改就行了。一个I这样拿着这个输出这个S瞅一。多简单是吧。还用循环这个什么一级层层级去匹配吗。不用了啊,不用了。哎,这就是咱们的最简单的一种方式,直接拿根节点下边的东西,OK,咱们接下来比如说。嗯,这个注释一下啊,重来。
09:02
这个是干嘛呢,先写着。获得。禽兽是吧。所有。新手。好,咱们来下一个啊。比如说咱们在这刚才说了。再往里边走一些,我现在想知道所有学生的所有的名字。所有学生的名字先写上需求。获取所有学。生的名字。应该咱们怎么写这么写啊,还是从根点select no里边写这个表达式就好。非常简单,上面找学生,是不是直接写学生啊?而这个名字是不是学生的名字呀,是不是也就是说这个名字应该在学生里边吧。所以直接一个撇内完事。这样的话,返回的这个集合。
10:02
累。来扇型。埃。好,咱们。打印一下呗。另一种拉姆达表达式怎么打印来着?For it,然后就是system sy so是吧?啊,不对。这里面不要这么写呢,Sy system.out冒号冒号print来走着。好,看看什么节点。是内部。是内是吧,人家说那我怎么打印里边的值啊,我想打ABC嘛,要名字吗?啊,大名的话这种不行了啊,可以使用这种啊。呃,里边的节点吗?S输出。System是吧?啊,然后这个打印s.get什么it吗?It不是里边的数据嘛,对吧。哎,走你。
11:00
没毛病是吧,咱们第一种写这个这个这个代码的时候,想拿这个里边这个名,我的天呐,是不是两重凤循环。麻烦死了,而现在嘞啊,直接这么获得就行了。啊,这种方式还是非常非常爽的啊,非常爽。好,再来一个啊,比如说我想获得所有的所有的名字,我不管你是学生,也不管你是禽兽,只要你是有名,我就给你打出来。这咋弄嘞啊,其实代码是一样的,我这copy了啊,再写一遍没什么意义啊啊把这两个注释打开,只是这里边儿这个,哎,我去没打开。只是这里边儿这个表达式不太一样啊。哎,这个你看这个表达是拿的是什么呀,是不是所有学生的名呀,而现在呢,我是不管你是学生还是这个禽兽,只要是有名,我就要给你打出来,也就是说这样的叫做。不管,呃。获取获得所有的名字,忽略层级和。
12:04
位置。对吧。忽略层级和位置,那这块咱们应该怎么做呢?简单。好,写完了。俩撇,俩撇表示的就是忽略层级和位置,只要能撇,只要有是你这个元素哈,是这个内幕就给你搞出来。忽略层级和位置。OK,来,走一走。辅出是不是abcde啊,一共咱五个是吧。哎,搞定了吧,记住了啊,这个是忽略层级和位置。这个比较比较透彻是吧,呃,我再想想还有什么一些别的写法啊。让他俩先注释。啊,比如说。嗯。我想拿到第一个学生啊,拿到第一个学生的信息,咱们应该怎么做获得第一个学生?
13:07
好,这个代码呢,其实还是一样的啊,我把这个代码copy一下。只不过在这还是在这个表达式做一些文章。那么第一个学生的话,在这里边用什么呢?就是。找学生这么搞的话,是不是所有的学生啊。然后嘞,在这里边搞上。OK。有点类似于数组,那下标是吧。好来,咱来试试啊,咱来试试啊,咱们先别拿data了,咱们就先输出这个对象是什么。好,他获得了一个对象,并且是什么类型?是student的吧?Student,然后呢,我在这块再把这个属性填上。我再把这个属性填上。来看这。比如说ID等于一等于二,诶,啊,写错字了。
14:03
写结束标签里了啊,眼睛看错了啊,呃,在哪呢?完事了。三。然后ID都写上啊啊不是这有这呢禽兽呢,禽兽也有ID4。嗯。我。好吧,呃,ID有了,我再给你选个属性叫类型。A类型。类型。C类型。这个呢,没有类型,再来个。ABC它叫E吧,把这个E和这个E匹配的啊。AABB。CC。啊,好了,加上了一些属性啊。来看这。
15:01
比如说加上属性之后啊,咱们就可以对属性做一些过滤了。比如说嗯,获取。呃。Student这里边儿元素。全都有是吧,啥也没。获取,呃,所有带有type属性的学生。其实我的意思是不是就拿这个AA和CC啊。对吧,学生这里边儿有type属性的,是不是就他俩呀。那么这样的话,我怎么去筛选。怎么去筛选呢啊,在这块可以做这样的一个事儿啊。At type。Student。
16:02
好看一眼是不是?是不是A和C,哎,拿到的就是这个和这个,我拿的是不是这个值啊AC吗。好,这个呢,就是是否带有属性的意思,带有属性type属性。At表示属性看到了吗?这是里边的这个值啊,这个值。哎,带有type属性的再来。比如说如果说type属性等于C的呢,我应该怎么获取?Copy一下。呃,获取带有type属性等于C的学生。直接用type属性去过滤是吧,当一个条件,那咱们在这块应该怎么去做呢?就直接在这type后边看好了,直接等于C。执行。
17:02
嗯。没拿着啊CC是吗。CC啊CC啊执行。啊,点错了啊。对这个啊,这这就行了啊。运行。没有没有是吧,这个注意了啊,属性的话要求在什么。带引号是吧,所以在这块CC引号包起来。引号包起来。来,再来一次。OK。拿到是不是带有CC属性的这个学生的名字啊,我一直在内是吧,一直在内。好了,这是属性匹配。属性匹配。好,咱们再来往后来这几种过去。有年龄是吧,我写年龄不是白写的啊。获得年龄。
18:01
超过。30岁的学生超过20岁吧。年龄超过20岁的学生,是不是这个和这个呀,B和C吧,那咱们这块应该怎么去写年龄,如果要超过的话。很简单。在这里边写选取所有学生,然后在这里边直接配置超过20。这是超过20,然后里边的那走着。是不是B和CB和C。这是年龄哈,年龄筛选,然后呢,我在这儿再添一个啊。填个啥呢?获得倒数第二个。倒数第二。呃,学生的名字。说白了,第一个是A,最后一个是C,然后倒数第二个是不是就是他呀。
19:04
就是B哈,倒数第二个,我在这个表达式这里边应该怎么写呢?填一吗。是吧,走着是不是B啊。OK。
我来说两句