Использование 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]

Комментариев нет:

Отправить комментарий