come rimuovere l'attributo di un eTree Element?
-
01-10-2019 - |
Domanda
Non ho Elemento eTree avere alcuni attributi -. Come possiamo eliminare l'attributo di perticular eTree elemento
Soluzione
Il .attrib
membro dell'elemento oggetto contiene il dict di attributi - è possibile utilizzare .pop("key")
o del
come si farebbe in qualsiasi altro dict per rimuovere un coppia di chiavi-val.
Altri suggerimenti
Esempio:
>>> from lxml import etree
>>> from lxml.builder import E
>>> otree = E.div()
>>> otree.set("id","123")
>>> otree.set("data","321")
>>> etree.tostring(otree)
'<div id="123" data="321"/>'
>>> del otree.attrib["data"]
>>> etree.tostring(otree)
'<div id="123"/>'
Fare attenzione a volte non avete l'attributo:
E 'sempre suggerito che gestiamo le eccezioni.
try:
del myElement.attrib["myAttr"]
except KeyError:
pass
Non c'è bisogno di try/except
mentre si stanno spuntando una chiave che non è disponibile. Ecco come si può fare questo.
Codice
import xml.etree.ElementTree as ET
tree = ET.parse(file_path)
root = tree.getroot()
print(root.attrib) # {'xyz': '123'}
root.attrib.pop("xyz", None) # None is to not raise an exception if xyz does not exist
print(root.attrib) # {}
ET.tostring(root)
'<urlset> <url> <changefreq>daily</changefreq> <loc>http://www.example.com</loc></url></urlset>'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow