odoo 中的 xpath 语法(简概 一)
大家好,
很多朋友在odoo 开发的时候,都遇到需要使用 xpath 修改继承视图的情况。我们这里就简单总结一下xpath 是什么:[数据结构]
首先:,
我们希望告诉电脑,我们的组织是这样一个架构,通过xml实现:
如何写代码呢?
<?xml version="1.0" encoding="ISO-8859-1"?> <openerp> <odoohk> <title lang="eng">Chief Executive Officer</title> <position>Systems Engineer</position> </odoohk> <odoohk> <title lang="eng">Vice President</title> <position>Python Developer</position> </odoohk> <openerphk> <title lang="eng">Senior Engineer</title> <position>Node.js Developer</position> </openerphk> </openerp>
第二:语法
我们,查询架构中的人员
表达式 | 描述 |
---|---|
nodename | 选取此节点的所有子节点。 |
/ | 从根节点选取。 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 |
.. | 选取当前节点的父节点。 |
@ | 选取属性。 |
第三:路径语法
表达式 | 结果 |
---|---|
/openerp/odoohk[1] | 选取属于 openerp 子元素的第一个 odoohk 元素。 |
/openerp/odoohk[last()] | 选取属于openerp 子元素的最后一个 odoohk 元素。 |
/openerp/odoohk[last()-1] | 选取属于 openerp 子元素的倒数第二个 odoohk 元素。 |
/openerp/odoohk[position()<3] | 选取最前面的两个属于 openerp 元素的子元素的 odoohk 元素。 |
//title[@lang] | 选取所有拥有名为 lang 的属性的 title 元素。 |
//title[@lang=’eng’] | 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。 |
/openerp/odoohk[contains(.,'Developer')]/title | 选取 openerp 元素中的 odoohk 元素的所有 title 元素,且其中有元素且其值须含有 Developer。 |
第四:模糊查询节点
- | 匹配任何元素节点。
@* | 匹配任何属性节点。
node() | 匹配任何类型的节点。
实例
路径表达式 | 结果 |
---|---|
/openerp/* | 选取 openerp 元素的所有子元素。 |
//* | 选取文档中的所有元素。 |
//title[@*] | 选取所有带有属性的 title 元素。 |
第五:选取多条路径
通过在路径表达式中使用“|”运算符,选取多个路径。
//odoohk/title | //odoohk/position
选取 odoohk 元素的所有 title 和 position 元素。
//title | //position
选取文档中的所有 title 和 position 元素。
/openerp/odoohk/title | //position
选取属于 openerp 元素的 odoohk 元素的所有 title 元素,以及文档中所有的position 元素。
第六:轴
如图,我们需要找到标红星星的节点:
代码:
//odoohk[contains(text(), ‘Developer’)]/parent::openerp/odoohk[contains(text(), ‘Engineer’)]
标题1 | 标题2 |
---|---|
child::book | 选取所有属于当前节点的子元素的 odoohk节点。 |
attribute::lang | 选取当前节点的 lang 属性。 |
child::* | 选取当前节点的所有子元素。 |
attribute::* | 选取当前节点的所有属性。 |
child::text() | 选取当前节点的所有文本子节点。 |
child::node() | 选取当前节点的所有子节点。 |
descendant::odoohk | 选取当前节点的所有 odoohk 后代。 |
ancestor::odoohk | 选择当前节点的所有 odoohk 先辈。 |
ancestor-or-self::odoohk | 选取当前节点的所有 odoohk 先辈以及当前节点(如果此节点是 odoohk 节点) |
child::*/child::position | 选取当前节点的所有 position孙节点。 |
总结
谢谢大家!欢迎提供意见!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
基于SSH隧道+chrome插件SwitchyOmega访问内网机器
背景:客户的服务在线下IDC,访问服务器通过VPN连接到IDC,但VPN连接后只放行了特性端口比如80,服务器部署了grafana系统之后不想与现有的80共用一个端口。比如grafana应用监听除80之外的3000端口,在不通过客户邮件申请其他端口的情况下,是否有其他办法呢?本文基于SH隧道+chrome插件SwitchyOmega访问IDC的3000端口画了架构图便于理解,如下图所示正常访问路线A,但由于防火墙的限制无法访问除允许的端口,所以我们想通过阿里云的服务器做ssh隧道(阿里云与IDC机器通过专线连接,端口未做限制),也就是图中的线路B。准备工作 :1) 准备一台与IDC互通的阿里云服务器.2) SwitchyOmega插件,官方下载地址:https://www.switchyomega.com/download/ 配置步奏:1) 配置ssh隧道(本文基于xshell实现)点击新建连接--填写服务器信息如下图隧道的配置端口可自定义。记住配置SwitchyOmega的时候要对应上。点击确定之后ssh隧道配置完毕2) 安装SwitchyOmega插件在 Chrome 地址栏输入 ...
- 下一篇
Java程序员年薪40W,他1年走了别人5年的路(技术提炼)
一、Java架构体系 1.高性能架构 2.开源框架解析 3.架构师筑基 4.微服务架构 5.团队协作开发 6.B2C商城项目实战 二、设计模式 三、数据结构与算法 四、BATJ企业面试总结 Java架构体系 1.高性能架构 2.开源框架解析 3.架构师筑基 4.微服务架构 5.团队协作开发 6.B2C商城项目实战 设计模式 关注我:点击这里(878249276)获取Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术视频教程资料,架构思维导图,和BATJ面试题及答案。 数据结构与算法 01 链表(上):轻松写出正确的链表算法,并实现LRU缓存淘汰算法 02 链表(下):ArrayList与LinkedList源码解析及应用场景 03 队列:线程池中有限资源请求队列排队功能的实现原理 04 栈:用户界面的前进跳转及回退机制如何实现 05 Hash表(上):HashMap 的实现原理精讲 06 Hash表(下):Hash思想在ThreadLocal与数据库索引中的应用 07 Java容器结构总结 08 树(上):树和二叉树的基...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作