Вы можете перебирать элементы вашего документа и извлекать второй элемент 'job'
. Это очень просто, используя метод iter
класса Element
.
from lxml import etree
tree = etree.parse('data.xml') #or whatever is your file name
root = tree.getroot()
job_elements = list(root.iter('job'))
job_elements
- это список со всеми элементами, помеченными 'job'
, в порядке появления в документе. Возьмем второй (индекс 1).
Чтобы напечатать его (со всеми его подэлементами), вы можете использовать функцию etree.tostring
. Это вернет двоичную строку, поэтому для корректного отображения ее на консоли вам может понадобиться декодировать ее в ascii.
output = etree.tostring(job_elements[1], pretty_print=True)
print(output.decode('ascii'))
Подробнее
etree.parse()
возвращает объект ElementTree
,С getroot()
вы получаете объект Element
, начиная с корня ElementTree
(у Element
есть больше методов). Эта строка на самом деле не нужна, так как вам нужен метод iter
, а ElementTree
также имеет метод iter, я добавил это просто как привычку. Однако, если вы захотите сделать некоторые дополнительные манипуляции с деревом, может быть полезно иметь Element
, а не ElementTree
.
job_elements = list(root.iter('job'))
Ключ - iter метод ,Он возвращает итератор по элементам в поддереве в порядке документа (более подробную информацию см. В связанных документах).