我想打開一個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