Как найти атрибут элемента с помощью lxml - PullRequest
1 голос
/ 18 февраля 2012

Предположим, у меня есть следующий xml:

<package xmlns="http://example/namespace">
    <rating system="au-oflc">PG</rating>
    ...
</package>

Чтобы получить текст элемента, описанного выше, я делаю следующее:

from lxml import entree
f = open('/Users/David/Desktop/metadata.xml')
metadata_contents = f.read()
node = etree.fromstring(metadata_contents)
rating = node.xpath('//t:rating/text()', namespaces = {'t':'http://example/namespace'})
>>> rating
['PG']

Как бы я получитьзначение "au-oflc"?

Ответы [ 2 ]

8 голосов
/ 18 февраля 2012

Вам нужно получить сам узел, а не его текст:

rating = node.xpath('//t:rating', namespaces = {'t':'http://example/namespace'})
print rating[0].attrib['system']
1 голос
/ 18 февраля 2012

Вы также можете получить доступ к атрибуту, используя XPath:

system = node.xpath('//t:rating/@system', namespaces = {'t':'http://example/namespace'})
print system[0]
...