Sto tentando di aprire un file xml e ottenere valori da determinati tag. L'ho fatto molto ma questo particolare xml mi sta dando dei problemi. Ecco una sezione del file xml:xmlns namespace breaking 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>
Ed ecco un esempio del mio codice 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')
Quando ho eseguito questo non è possibile trovare il tag fornitore o il suo valore. Se rimuovo xmlns="http://apple.com/itunes/importer"
allora tutto funziona come previsto. La mia domanda è come posso rimuovere questo spazio dei nomi, perché non sono affatto interessato a questo, quindi posso ottenere i valori dei tag che ho bisogno di usare lxml?
Quello è eccellente ubuntu, funziona a meraviglia, applausi. – speedyrazor
ubuntu, come trovo un attributo di un tag, ho ammesso il mio esempio originale, quindi sto cercando il valore del nome dell'attore = – speedyrazor
Se si ha l'elemento ', è possibile accedere al valore dell'attributo con l'elemento' .attrib [ 'name'] '. Tuttavia, se si stanno rasando gli elementi 'provider' e' actor' da un file XML, è possibile impostare un singolo XPath per eseguire entrambi contemporaneamente la sintassi '|' (o). Ho modificato il post per mostrare cosa intendo. – unutbu