如何删除etree元素的属性?

时间:2010-04-27 10:31:31

标签: python xml lxml elementtree

我的etree元素有一些属性 - 我们如何删除特定etree元素的属性。

3 个答案:

答案 0 :(得分:32)

.attrib member of the element object包含属性的字典 - 您可以使用.pop("key")del like you would on any other dict删除键值对。

答案 1 :(得分:8)

示例:

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

请注意,有时候你没有属性:

始终建议我们处理异常。

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

答案 2 :(得分:4)

当您弹出一个不可用的密钥时,您不需要try/except。以下是如何做到这一点。

代码

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