前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XPath 使用笔记

XPath 使用笔记

作者头像
zucchiniy
发布2020-05-22 12:04:36
3990
发布2020-05-22 12:04:36
举报
文章被收录于专栏:洞明学问

xpath 的语法主要是使用的 /name/*[]|//*[@name] 的语法规则。

  • 定位节点

节点主要是使用的 id 或者是 classname 进行匹配的,这种情况下,如果是 / 则表示找某一层,如果是 // 进行匹配,则表示是任意位置的某个层,如果用 * 则表示任意名称。

比如:/cd 是指的 classname 为 cd 的结构,而且是第一层就是 cd,如果是 //cd 则表示其中某层为 cd 但是可以不是最外层。

  • 选择分支

使用中括号可以选择分支。以下的语法从 catalog 的子元素中取出第一个叫做 cd 的元素。XPath 的定义中没有第 0 元素这种东西。而且当我们想要选取某类值的时候,可以认为 [] 中的是属性的名称,比如 //cata[@name] 是找的任意 cata 层中包含 name 属性的元素位置。

在属性之外,还有一种是索引查找方式,比如 //cata[1] 表示查找任意 cata 层中的第一个分支,这里索引是从 1 开始,而不是 0 开始,如果查找最后一个,则需要使用 cata[last()] 去找,这里只有 last() 方法,不存在 first() 方法。

如果是 [] 中的内容没有 @ 符号,又不是索引值(数字)或者是 last() 方法的话,则表示找出包含某个子元素的情况,比如 //cata/cd[pr] 表示包含 pr 的 /cata/cd 层。如果想指定元素的值,则可以在括号中增加对应的匹配 //cata/cd[pr=1.0]

| 在 xpath 中表示或者关系,即符合前面的,或者后面的内容,比如 /cata/pr | /cata/pm 两种我全要的意思。

  • 选择属性

如果某一个值是用 @ 作为开始,则表示是属性,基本的语法和层的 / 是一致的,区别是可以多个属性并存,即 /ca[@na='uu'][@nb='zz'] ,这样就是找到 cd 层中属性 na 是 uu 且 属性 nb 是 zz 的元素。

  • 特殊方法

contains(): 包含语法,比如 /ca[contains(@name,'na')] name 属性中包含 na 的元素 text(): 显示文本信息,这里对应的可以用来查询,而且进行其它操作,是对元素属性的补充 starts-with(): 开始于,比如 /ca[starts-with(@name,'na')] name 属性开始位置包含 na

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档