Использование lxml в python
[b]Пример использования lxml [/b]
[code]
# coding: utf8
xml = '''
-
This text about linux
-
Apple company
'''
from lxml import etree
tree = etree.XML(xml) # Парсинг строки
#tree = etree.parse('1.xml') # Парсинг файла
nodes = tree.xpath('/soft/os/item') # Открываем раздел
for node in nodes: # Перебираем элементы
print node.tag,node.keys(),node.values()
print 'name =',node.get('name') # Выводим параметр name
print 'text =',[node.text] # Выводим текст элемента
# Доступ к тексту напрямую, с указанием фильтра
print 'text1',tree.xpath('/soft/os/item[@name="linux"]/text()')
print 'text2',tree.xpath('/soft/os/item[2]/text()')
# Доступ к параметру напрямую
print 'dist',tree.xpath('/soft/os/item[@name="linux"]')[0].get('dist')
# Рекурсивный перебор элементов
def getn(node):
print node.tag,node.keys()
for n in node:
getn(n)
getn(tree.getroottree().getroot())
[/code]
[b]Результат[/b]
[code]
item ['name', 'dist'] ['linux', 'ubuntu']
name = linux
text = ['\n This text about linux\n ']
item ['name'] ['mac os']
name = mac os
text = ['\n Apple company\n ']
item ['name', 'dist'] ['windows', 'XP']
name = windows
text = [None]
text1 ['\n This text about linux\n ']
text2 ['\n Apple company\n ']
dist ubuntu
soft []
os []
item ['name', 'dist']
item ['name']
item ['name', 'dist']
[/code]
[b]Можно отобразить звено в виде xml текста[/b]
[code]
d = tree.xpath('//*')[0]
print etree.tostring(d)
print etree.tounicode(d)
[/code]
[b]Еще вариаант использования[/b]
[code]
Возник вопрос по дочерному элементу.
При указании path
nodes = tree.xpath('/competitions/competition')
элементы тега собираются без проблем, но как добраться во время цикла к тегу ?
[/code]
[code]
nodes = tree.xpath('/competitions/competition')
for node in nodes:
for team in node:
print team.values()
[/code]
[url=http://www.py-my.ru/post/4bfb3c6a1d41c846bc0000be]источник[/url]
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий