Próbuję otworzyć plik xml i uzyskać wartości z niektórych tagów. Zrobiłem to dużo, ale ten konkretny xml daje mi pewne problemy. Oto fragment pliku xml:Przestrzeń nazw xmlns łamiąc 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>
A oto próbka mojego kodu Pythona:
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')
Kiedy uruchomić ten nie może znaleźć tag usługodawcy lub jego wartość. Jeśli usuniemy xmlns="http://apple.com/itunes/importer"
, wszystkie działają zgodnie z oczekiwaniami. Moje pytanie brzmi: jak mogę usunąć ten obszar nazw, ponieważ w ogóle mnie to nie interesuje, więc mogę uzyskać wartości znaczników, których potrzebuję, używając lxml?
Ów znakomity Ubuntu działa wspaniale, wiwaty. – speedyrazor
ubuntu, jak znaleźć atrybut znacznika, poprawiłem mój oryginalny przykład, więc szukam wartości nazwy aktora = – speedyrazor
Jeśli masz 'element', możesz uzyskać dostęp do wartości atrybutu za pomocą' elementu .attrib ['name'] '. Jednakże, jeśli zbijasz elementy 'provider' i' actor' z pliku XML, możesz skonfigurować pojedynczą ścieżkę XPath do jednoczesnego korzystania ze składni '|' (lub). Zmieniłem wpis, aby pokazać, co mam na myśli. – unutbu