如何使用lxml查找元素属性

问题描述 投票:3回答:3

假设我有以下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”?

python xml lxml
3个回答
11
投票
您需要检索节点本身,而不是其文本:

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]


0
投票
georganswer假定所有rating元素都将带有system标签。如果不是一定如此,则使用rating[0].attrib.get('system')将避免KeyError。
© www.soinside.com 2019 - 2024. All rights reserved.