我有一个xml文件,我需要解析标签的值。元素的XPATH
为"//provider"
。我如何使用lxml
来解析此标记?这是xml的开头:
<?xml version="1.0" encoding="UTF-8"?>
<package xmlns="http://...">
<provider>testmovieprovider</provider>
<language>ja-JP</language>
<!-- more stuff -->
</package>
以下是我的尝试:
>>> f = open(file)
>>> xml = f.read()
>>> node = etree.fromstring(xml)
>>> provider=node.xpath('//provider')
>>> provider
[] # (This returns an empty set, instead of the provider name, 'testmovieprovider'.)
答案 0 :(得分:3)
尝试使用xml namespace
我添加了名称空间xmlns="http://codespeak.net/ns/test1"
并使用以下代码
>>> xml_node = etree.fromstring(st)
>>> xml_node.xpath('//t:provider/text()',namespaces={'t': 'http://codespeak.net/ns/test1'})
['testmovieprovider']
>>>
我的st
字符串是
'<?xml version="1.0" encoding="UTF-8"?>
<package xmlns="http://codespeak.net/ns/test1">
<provider>testmovieprovider</provider>
<language>ja-JP</language>
<!-- more stuff -->
</package>'
答案 1 :(得分:3)
尝试这样的XPath:
/*/*[local-name()='provider']