how to remove attribute of a etree Element? how to remove attribute of a etree Element? xml xml

how to remove attribute of a etree Element?


The .attrib member of the element object contains the dict of attributes - you can use .pop("key") or del like you would on any other dict to remove a key-val pair.


Example :

>>> 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"/>'

Take care sometimes you dont have the attribute:

It is always suggested that we handle exceptions.

try:    del myElement.attrib["myAttr"]except KeyError:    pass


You do not need to try/except while you are popping a key which is unavailable. Here is how you can do this.

Code

import xml.etree.ElementTree as ETtree = 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 existprint(root.attrib)  # {}ET.tostring(root)'<urlset> <url> <changefreq>daily</changefreq> <loc>http://www.example.com</loc></url></urlset>'