2013-02-19 57 views
0

假设我有一堆如何乘以XPATH中的值?

<item price='n' sold='m'> 
... 
</item> 

我想要做的价格*每个项目的销售。我在蟒蛇试图

'//item/(@price * @sold)' 

从内LXML,但我不断收到错误“无效表达”。 xmllint命令也是如此。 但是相同的查询在Oxygen xml编辑器中起作用。

我该如何做这项工作?

回答

0

计算可以在XPath 2.0中完成,因为我已经更正了!

如果你想选择价格低于或等于出售价格倍数2的所有东西,这是可能的。请参阅: http://en.wikipedia.org/wiki/XPath#Number_functions

+1

Downvoting,答案错过这是该语法是在有效点XPath 2.0。 – 2013-02-19 16:21:34

5

您正在使用的XPath表达式需要XPath 2.0。 (您可以通过将XPath版本设置为1.0并再次尝试查询来验证Oxygen。)我不认为lxml支持XPath 2.0。

如果你不能得到支持的XPath 2.0库,然后,而不是试图做这一切里面的XPath,你需要:

  • 选择XPath中,例如在<item>元素使用XPath表达式//item
  • 循环通过在Python
  • 在每个 <item>元素的上下文
  • 这些元件,计算XPath表达式@price * @sold
+0

感谢您的及时答复,非常感谢。我只根据时间选择了另一个答案。再次感谢。 – Karthick 2013-02-19 14:58:05

+0

@Karthick:不客气。关于接受(复选标记) - 我不介意你选择了其他答案。但总的来说,我会说,不觉得你需要“接受”第一个答案。该网站将更有价值,因为我们鼓励有帮助和准确的答案,而不仅仅是快速答案。 – LarsH 2013-02-19 21:21:46