odoo 中的 xpath 语法(简概 一)

简介: 大家好, 很多朋友在odoo 开发的时候,都遇到需要使用 xpath 修改继承视图的情况。我们这里就简单总结一下xpath 是什么:[数据结构] 首先:, 我们希望告诉电脑,我们的组织是这样一个架构,通过xml实现: 如何写代码呢?

大家好,

很多朋友在odoo 开发的时候,都遇到需要使用 xpath 修改继承视图的情况。我们这里就简单总结一下xpath 是什么:[数据结构]

首先:

我们希望告诉电脑,我们的组织是这样一个架构,通过xml实现:

xpath_v_1

如何写代码呢?

<?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 元素。

第六:轴

如图,我们需要找到标红星星的节点:

xpath_v_2

代码:

//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孙节点。

总结

谢谢大家!欢迎提供意见!

目录
相关文章
|
机器学习/深度学习 运维
Moment:又一个开源的时间序列基础模型
MOMENT团队推出Time-series Pile,一个大型公共时间序列数据集,用于预训练首个开源时间序列模型家族。模型基于Transformer,采用遮蔽预训练技术,适用于预测、分类、异常检测和输入任务。研究发现,随机初始化比使用语言模型权重更有效,且直接预训练的模型表现出色。MOMENT改进了Transformer架构,调整了Layer norm并引入关系位置嵌入。模型在长期预测和异常检测中表现优异,但对于数值预测的效果尚不明朗。论文贡献包括开源方法、数据集创建和资源有限情况下的性能评估框架。
985 0
|
安全 Java API
解决 Swagger API 未授权访问漏洞:完善分析与解决方案
Swagger 是一个用于设计、构建、文档化和使用 RESTful 风格的 Web 服务的开源软件框架。它通过提供一个交互式文档页面,让开发者可以更方便地查看和测试 API 接口。然而,在一些情况下,未经授权的访问可能会导致安全漏洞。本文将介绍如何解决 Swagger API 未授权访问漏洞问题。
|
存储 数据库
ODOO中的Related字段及Computed字段原理
难理解的参数: Store = True 原因:ODOO 默认情况下不存储计算字段。(因为,可以减少数据库的开销)。但你知道的, 当您希望能够执行某个函数,需要从数据库中调用此值时,这会导致问题。要修复此问题,odoo 在计算字段上提供 store=true 标志。
3829 0
|
7月前
|
关系型数据库 Linux 数据库
2025 年 Odoo 安装与部署全攻略
本文介绍了 Odoo 的手工安装与自动化部署方案。手工安装需完成 Docker 安装、镜像拉取及容器运行,但存在安装复杂、配置困难、管理繁琐等问题。Websoft9 提供了自动化部署方案,通过控制台实现快速创建数据库、初始化环境和后台配置,大幅降低技术门槛,将部署时间从 2 小时缩短至 10 分钟。对比显示,Websoft9 在时间成本、技术要求和稳定性上更具优势,适合中小团队使用,助力企业聚焦业务流程优化。
1682 1
|
人工智能 JSON 语音技术
Qwen2-Audio开源,让VoiceChat更流畅!
在一个通用的AI系统中,核心模型应该能够理解不同模态的信息。当前的大语言模型现在已经能够理解语言并进行推理,并且已经扩展到了更多的模态,包括视觉和音频。
|
消息中间件 负载均衡 Kafka
Kafka学习---2、kafka生产者、异步和同步发送API、分区、生产经验(一)
Kafka学习---2、kafka生产者、异步和同步发送API、分区、生产经验(一)
|
弹性计算 运维 负载均衡
构建高可用性的分布式系统:技术与策略
【7月更文挑战第1天】构建高可用分布式系统涉及负载均衡、容错处理和数据一致性等关键技术,遵循冗余、模块化及异步设计原则,并通过监控告警、自动化运维和弹性伸缩策略确保稳定性。
|
消息中间件 数据采集 Python
2024年Python最全使用python的pika链接rabbitMq断裂_pika,BTAJ面试有关散列(哈希)表的面试题详解
2024年Python最全使用python的pika链接rabbitMq断裂_pika,BTAJ面试有关散列(哈希)表的面试题详解
2024年Python最全使用python的pika链接rabbitMq断裂_pika,BTAJ面试有关散列(哈希)表的面试题详解
|
数据库 数据安全/隐私保护 开发者
Odoo 15开发手册第一章 使用开发者模式快速入门
Odoo提供了一个快速应用开发框架,尤其适合构建商业应用。这类应用通常用于保存业务记录和工作流。Odoo 不仅简化了这类应用的构建,还提供了看板、日历、图表等视图的丰富组件,用于创建难以抗拒的用户界面。
1425 3
Odoo 15开发手册第一章 使用开发者模式快速入门
|
负载均衡 算法 应用服务中间件
【微服务系列笔记】负载均衡
本文介绍了负载均衡的概念和重要性,指出随着流量增长,通过垂直扩展和水平扩展来提升系统性能,其中水平扩展引入了负载均衡的需求。负载均衡的目标是将流量分布到多台服务器以提高响应速度和可用性,常见的硬件和软件负载均衡器包括F5、A10、Nginx、HAProxy和LVS等。 文章接着提到了Ribbon,这是一个客户端实现的负载均衡器,用于Spring Cloud中。Ribbon在发起REST请求时进行拦截,根据预设的负载均衡算法(如随机算法)选择服务器,并重构请求URI。文中还介绍了如何通过代码和配置文件两种方式自定义Ribbon的负载均衡策略。
892 3