我正在使用Odoo15,并试图访问以下XML代码中的文本内容:
<div t-if="record.type.raw_value == 'product'">
On hand:
<field name="qty_available"/>
<field name="uom_id"/>
</div>
我尝试过使用//div/text()
和//div[contains(text(), 'On hand: ')]
,但都不起作用。有人能帮我吗?
问题
首先,请确保具有有效的xml。
//div/text()
将从所有div中选择所有text((-节点,也选择text((–仅包含空白的节点。
//div[contains(text(), 'On hand: ')]
如果div
-元素包含多个text((-节点,并且contains((-函数的第一个参数只能是one
字符串,则可能会失败。
解决方案
根据div
内容的变化,您可以使用:
//div[contains(., 'On hand: ')]
将选择任何具有字符串"手头:"的div
contains((-函数中的.
将所有text()
-节点连接到一个字符串中
//div[contains(text()[1], 'On hand: ')]
将选择任何具有包含字符串"手头:"的第一个text()
节点的div
//div/text()[contains(., 'On hand: ')]
将选择任何text()
节点,该节点是div
的直接子节点,并且包含字符串"手头:">
//div/text()[normalize-space()]
将只选择text()
-作为div
的直接子节点的节点,该节点包含的不仅仅是空白