odoo 中的 xpath 语法(简概 一)

大家好,

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

首先:

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

xpath_v_1

如何写代码呢?

<?xml version="1.0" encoding="ISO-8859-1"?>
<openerphk>
<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孙节点。

总结

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

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值