LINUX.ORG.RU

История изменений

Исправление 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))


Плюс исправить косяк с выбором не того элемента. )