gadzhi15
@gadzhi15

LXML в Python? Как передать переменную?

Имеется XML файл вида:
<employees>
	<employee>
		<id>1</id>
		<name>Oleg</name>
	</employee>
	<employee>
		<id>2</id>
		<name>Masha</name>
	</employee>
</employees>


С помощью Python 2.7 и библиотеки lxml, мне нужно по нужному id, вывести значение тега name.
Вся проблема заключается в том что нужное id у меня хранится в переменной. А в методе tree.xpath можно указать нужное значение, но не переменную, которая содержит значение? Как реализовать код в таком случае?

tree = etree.parse('test.xml')
id = "2"

event_name2 = tree.xpath(r'.//id[text() = "2"]'r'/../name/text()')
name = ''.join(event_name2).encode('utf-8')
print name
  • Вопрос задан
  • 546 просмотров
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Почему бы и нет:
# -*- coding: utf-8 -*-
from lxml import etree
import StringIO

test ="""<employees>
  <employee>
    <id>1</id>
    <name>Oleg</name>
  </employee>
  <employee>
    <id>2</id>
    <name>Masha</name>
  </employee>
</employees>"""

fl = StringIO.StringIO()
fl.write(test)
fl.seek(0)

tree = etree.parse(fl)

your_var = 2

event_name2 = tree.xpath(r'.//id[text() = "{id}"]/../name/text()'.format(id=your_var))
print event_name2


выведет

['Masha']
[Finished in 0.1s]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы