У меня есть файловая система, которая представлена в 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>
Что мне нужно сделать, так это с помощью lxml Python получить только те объекты 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?
Спасибо