gpt4 book ai didi

python - XPath:仅获取具有特定子元素的元素

转载 作者:数据小太阳 更新时间:2023-10-29 02:05:28 25 4
gpt4 key购买 nike

我有一个文件系统,它以以下格式在 xml 文档中表示:

<xml xmlns="namespace1" xmlns:ns2="namespace2">
<entry>
<id>123</id>
<ns2:content name="type">directory</ns2:content>
<ns2:content name="numErrors">3</ns2:content>
</entry>
...
<entry>
<id>456</id>
<ns2:content name="type">file</ns2:content>
<ns2:content name="docState">success</ns2:content>
</entry>
...
</xml>

我需要做的是,使用 Python 的 lxml,只检索表示目录的 entry 对象。所有条目都包含一个 <ns2:content name="docState"> 对象,但我需要知道如何检索 entry 对象列表,其中该对象的文本等于 directory 。我可以通过几个不方便的步骤来完成此操作,但我宁愿对其进行一次查询。这是我分步进行的方式:

#xml_parse.py

ns={'ns1':'namespace1','ns2':'namespace2'}
for node in tree.xpath("//ns1:entry",namespaces=ns):
if node.find("ns2:content[@name='type']").text=="directory":
#do stuff with node
pass

谁能解释如何在 for 语句中而不是使用 if 执行此操作?

谢谢

最佳答案

使用以下 XPath 表达式:

//ns1:entry[ns2:content[@name='type' and .='directory']]

关于python - XPath:仅获取具有特定子元素的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8085708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com