如何在Odoo15中使用Xpath获取XML文本内容?
Odoo15中获取QWeb模板里的文本内容解决方案
针对你遇到的XPath表达式无法匹配到On hand: 文本的问题,原因及解决方法如下:
问题原因
- 原QWeb模板里的
div下,On hand:文本节点前后存在缩进空白,直接用//div/text()会返回包括空白节点在内的所有文本节点;而//div[contains(text(), 'On hand: ')]会检查div的第一个文本节点(即前面的空白),自然匹配不到目标文本。 - 若针对渲染后的HTML操作,Odoo会将
<field>标签替换为实际页面元素,div内的文本节点会被这些元素分隔,同样需要处理空白和节点匹配问题。
有效XPath表达式
- 精准匹配去除前后空白后的目标文本:
//div/text()[normalize-space()='On hand:'] - 模糊匹配包含目标文本的节点:
//div/text()[contains(normalize-space(), 'On hand:')] - 获取
div下所有非空白的文本内容://div/text()[normalize-space()]
额外说明
如果是在Odoo的视图继承或XPath定位中操作QWeb模板,还可以结合t-if条件精准定位:
//div[@t-if="record.type.raw_value == 'product'"]/text()[normalize-space()='On hand:']
内容的提问来源于stack exchange,提问作者Ka_
相关产品推荐
相关产品推荐

