假设我有一堆
<item price='n' sold='m'>
...
</item>
我想做每件商品的售价*。我在尝试
'//item/(@price * @sold)'
从 python 中的 lxml 内部,但我不断收到错误'Invalid Expression'。xmllint 命令也会发生同样的情况。但是相同的查询在 Oxygen xml 编辑器中有效。
我该如何进行这项工作?
您使用的 XPath 表达式需要 XPath 2.0。(您可以通过将 XPath 版本设置为 1.0 并再次尝试查询来在 Oxygen 中验证这一点。)我认为 lxml 不支持 XPath 2.0。
如果您无法获得支持 XPath 2.0 的库,那么与其尝试在 XPath 中完成所有操作,您需要:
<item>
元素,例如使用 XPath 表达式//item
<item>
元素的上下文中,计算 XPath 表达式@price * @sold
可以在 XPath 2.0 中进行计算,因为我已经更正了!
如果您想选择价格低于或等于售价乘以 2 的所有商品,这是可能的。见下: http ://en.wikipedia.org/wiki/XPath#Number_functions