我想打开一个xml文件,并从某些标签中获取值。我做了很多,但这个特殊的XML给我一些问题。下面是XML文件的一部分:xmlns命名空间打破lxml
<?xml version='1.0' encoding='UTF-8'?>
<package xmlns="http://apple.com/itunes/importer" version="film4.7">
<provider>filmgroup</provider>
<language>en-GB</language>
<actor name="John Smith" display="Doe John"</actor>
</package>
这里是我的Python代码示例:
metadata = '/Users/mylaptop/Desktop/Python/metadata.xml'
from lxml import etree
parser = etree.XMLParser(remove_blank_text=True)
open(metadata)
tree = etree.parse(metadata, parser)
root = tree.getroot()
for element in root.iter(tag='provider'):
providerValue = tree.find('//provider')
providerValue = providerValue.text
print providerValue
tree.write('/Users/mylaptop/Desktop/Python/metadataDone.xml', pretty_print = True, xml_declaration = True, encoding = 'UTF-8')
当我跑这一点,找不到供应商的标签或它的值。如果我删除xmlns="http://apple.com/itunes/importer"
,那么所有工作都按预期工作。 我的问题是我如何删除这个命名空间,因为我对此并不感兴趣,所以我可以使用lxml获取我需要的标记值?
那优秀的Ubuntu,作品一种享受,欢呼声。 – speedyrazor
ubuntu,我如何找到一个标签的属性,我已经推荐了我的原始示例,所以我正在寻找演员姓名的值= – speedyrazor
如果你有'element',你可以通过'element .attrib [ '名称']'。但是,如果您正在从XML文件中提取'provider'和'actor'元素,则可以使用'|'(或)语法将单个XPath设置为同时执行。我编辑了这篇文章来展示我的意思。 – unutbu