Я пытаюсь открыть xml-файл и получить значения из определенных тегов. Я сделал это много, но этот конкретный xml дает мне некоторые проблемы. Вот раздел файла XML:xmlns namespace break 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?
Thats отлично убунт, работает удовольствие, веселит. – speedyrazor
ubuntu, как бы я нашел атрибут тега, я внес свой первоначальный пример, поэтому я ищу значение имени актера = – speedyrazor
Если у вас есть 'element', вы можете получить доступ к значению атрибута с помощью элемента .attrib [ 'имя'] '. Однако, если вы очищаете элементы 'provider' и' actor' из файла XML, вы можете настроить один XPath, чтобы сделать это одновременно, используя синтаксис '|' (или). Я редактировал сообщение, чтобы показать, что я имею в виду. – unutbu