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

总结

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

目录
相关文章
|
6月前
|
存储 Windows
Cheat Engine基本使用方法
Cheat Engine基本使用方法
93 2
|
9月前
ant Table表格的一些常用的小功能以及常见的报错解决方法
ant Table表格的一些常用的小功能以及常见的报错解决方法
42 0
|
SQL 关系型数据库 PostgreSQL
odoo 开发入门教程系列-约束(Constraints)
odoo 开发入门教程系列-约束(Constraints)
117 0
|
存储 数据库 Python
odoo 开发入门教程系列-计算的字段和变更(Computed Fields And Onchanges)
odoo 开发入门教程系列-计算的字段和变更(Computed Fields And Onchanges)
143 0
|
存储 SQL 安全
odoo 开发入门教程系列-模型和基本字段
odoo 开发入门教程系列-模型和基本字段
153 0
|
Python
odoo 开发入门教程系列-准备一些操作(Action)?
odoo 开发入门教程系列-准备一些操作(Action)?
119 0
|
缓存 JSON JavaScript
ES6常用语法
ES6:最新版的JS,ECMAScript标准 JavaScript语言(实现),它还有多种称呼: • ECMAScript6.0 • ECMA6 • ES6
|
PHP
PHP解析Markdown库,parsedown扩展自定义语法
在开发系统过程中,有些信息编写储存是使用Markdown通用语法,但由于各个平台的会新增一些独特规范,一般的解析库都是只包含了标准语法,对于自定义语法是不支持解析的(如vuepress文档系统中的::: tip 提示语块) 我们从vuepress迁移文档系统到自己实现的文档系统时,特定标签无法解析,需要扩展解析库的功能,来完成自定义语法。 PHP常见的Markdown解析库是parsedown。这个库非常的轻量,只有一个文件,无需依赖其他扩展。
217 0
PHP解析Markdown库,parsedown扩展自定义语法
|
SQL 自然语言处理 TensorFlow
Python-利用model,按照模版将来源表拼凑成规定SQL
最近项目组来了活,有一堆不同业务域的表,需要我们按照表的字段内容将表分到不同的属性域中,说简单点就是把可以用的表unionall起来,听起来很简单,就拿优惠券发送表来说,八十个字段的模版表,有八个来源表,每个来源表假如是五十个字段,需要的工作量多大,就不称述了。
114 0
|
前端开发 JavaScript 程序员
ES6常用语法总结
ES6常用语法总结
237 0