xpath 表达式获取属性 x 的值,其中属性 y 的值等于 z

时间:2021-03-22 12:02:09

标签: python xml xpath

我有一个包含如下数据的 XML 文件:

<?xml version="1.0" encoding="UTF-8"?>
<document date="2021-03-01" name="dataExport">

<CASHFLOW CASHFLOW_ID="001" C001="06-08"/><CASHFLOW_FIELD CASHFLOW_ID="001" C001="06-08" FIELDNAME="A001" VALUE="0"/><CASHFLOW_FIELD CASHFLOW_ID="001" F001="04-08-01" FIELDNAME="C254" VALUE="15.78"/>

<CASHFLOW CASHFLOW_ID="002" C001="06-08"/><CASHFLOW_FIELD CASHFLOW_ID="001" C001="06-08" FIELDNAME="A001" VALUE="2"/><CASHFLOW_FIELD CASHFLOW_ID="002" C001="06-08" FIELDNAME="C254" VALUE="10.55"/>

</document>

使用 XPath,我想获取属性“VALUE”的值,其中属性“CASHFLOW_ID”的值为“002”,属性“FIELDNAME”的值为“C254”。也就是说,我想要值 "10.55"

我尝试了以下方法来实现我的目标(使用 python 库 lxml):

value_I_want = tree.xpath("//@VALUE[@CASHFLOW_ID='001'][@FIELDNAME='C254']")

但不是给我 10.55,而是给我一个空列表 ([])。

我还尝试了以下方法:

value_I_want = tree.xpath("//[@VALUE][@CASHFLOW_ID='001'][@FIELDNAME='C254']")

...但这是一个无效的表达式。

获得我想要的东西的正确 XPath 表达式是什么?

1 个答案:

答案 0 :(得分:1)

Correct syntax 将是

//CASHFLOW_FIELD[@CASHFLOW_ID='001' and @FIELDNAME='C254']/@VALUE
相关问题