История изменений
Исправление evilface, (текущая версия) :
#!/usr/bin/env python3
from lxml import etree
xml = """<root>
<tagid id="10">
<foo>
<text>mytext</text>
</foo>
<bar>
<other>somedata</other>
</bar>
</tagid>
<tagid id="20">
<foo>
<text>some another text</text>
</foo>
<bar>
<other>some another data</other>
</bar>
</tagid>
</root>"""
last_id = None
found = False
root = etree.fromstring(xml)
for element in root.iter():
if element.tag == 'tagid':
last_id = element.get('id')
elif element.tag == 'text' and element.text == 'mytext':
found = True
break
if not found:
print('Not found')
else:
print('Found in: {}'.format(last_id))
Плюс исправить косяк с выбором не того элемента. )
UPD: сегодня я что-то рассеян.
Исходная версия evilface, :
#!/usr/bin/env python3
from lxml import etree
xml = """<root>
<tagid id="10">
<foo>
<text>text</text>
</foo>
<bar>
<other>somedata</other>
</bar>
</tagid>
<tagid id="20">
<foo>
<text>mytext</text>
</foo>
<bar>
<other>some another data</other>
</bar>
</tagid>
</root>
"""
last_id = None
root = etree.fromstring(xml)
for element in root.iter():
if element.tag == 'tagid':
last_id = element.get('id')
elif element.tag == 'text' and element.text == 'mytext':
break
if last_id == None:
print('Not found')
else:
print('Found in: {}'.format(last_id))
Плюс исправить косяк с выбором не того элемента. )