У меня есть файл XML, который выглядит так:
xml = '''<?xml version="1.0"?>
<root>
<item>text</item>
<item2>more text</item2>
<targetroot>
<targetcontainer>
<target>text i want to get</target>
</targetcontainer>
<targetcontainer>
<target>text i want to get</target>
</targetcontainer>
</targetroot>
...more items
</root>
'''
С помощью lxml я пытаюсь получить доступ к тексту в элементе ‹ target >. Я нашел решение, но я уверен, что есть лучший и более эффективный способ сделать это. Мое решение:
target = etree.XML(xml)
for x in target.getiterator('root'):
item1 = x.findtext('item')
for target in x.iterchildren('targetroot'):
for t in target.iterchildren('targetcontainer'):
targetText = t.findtext('target')
Хотя это работает, поскольку дает мне доступ ко всем элементам в корне, а также к целевому элементу, мне трудно поверить, что это наиболее эффективное решение.
Итак, мой вопрос таков: есть ли более эффективный способ доступа к текстам ‹ target >, оставаясь в цикле root, потому что мне также нужен доступ к другим элементам.