【发布时间】:2017-03-29 20:29:55
【问题描述】:
我有一个用于解析 XML 并将某些感兴趣的元素导出到 csv 文件的 python 脚本。我现在尝试更改脚本以允许根据条件过滤 XML 文件,等效的 XPath 查询将是:
\DC\Events\Confirmation[contains(TransactionId,"GTEREVIEW")]
当我尝试使用 lxml 这样做时,我的代码是:
xml_file = lxml.etree.parse(xml_file_path)
namespace = "{" + xml_file.getroot().nsmap[None] + "}"
node_list = xml_file.findall(namespace + "Events/" + namespace + "Confirmation[TransactionId='*GTEREVIEW*']")
但这似乎不起作用。任何人都可以帮忙吗? XML 文件示例:
<Events>
<Confirmation>
<TransactionId>GTEREVIEW2012</TransactionId>
</Confirmation>
<Confirmation>
<TransactionId>GTEDEF2012</TransactionId>
</Confirmation>
</Events>
所以我想要所有包含事务 ID 的“确认”节点,其中包含字符串“GTEREVIEW”。 谢谢
【问题讨论】:
-
你的 xml 文件在哪里?
-
我已经更新了问题。
标签: python xml xpath lxml contains