2012-02-17 2 views
1

Предположим, я следующие XML:Как найти атрибут элемента с помощью LXML

<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»?

ответ

6

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

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

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

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