我有一个用xml.etree.ElementTree
创建的简单XML对象<person>
。
<person name='John' age='21' />
我想修改XML元素以删除age
属性。
<person name='John' />
我可以使用.get("age")
访问该属性,但使用.remove("age")
会导致TypeError。
import xml.etree.ElementTree as ElementTree
xml = ElementTree.Element('person', name="john", age="21")
xml.remove("age")
# TypeError: remove() argument must be xml.etree.ElementTree.Element, not str
According to the documentation,.remove()
只能用于删除子元素。似乎没有任何替代选项可以删除属性。
如何从xml.etree.ElementTree
对象中删除XML属性?
答案 0 :(得分:3)
您可以尝试del xml.attrib["age"]
import xml.etree.ElementTree as ElementTree
xml = ElementTree.Element('person', Name="john", age="21")
print(xml.items())
del xml.attrib["age"]
print(xml.items())
将产生:
[('Name', 'john'), ('age', '21')]
[('Name', 'john')]
答案 1 :(得分:0)
使用xml.attrib.pop("age")
。
from xml.etree import ElementTree
xml = ElementTree.Element('person', name="john", age="21")
print(ElementTree.tostring(xml).decode())
xml.attrib.pop("age")
print(ElementTree.tostring(xml).decode())
输出:
<person name='John' age='21' />
<person name='John' />
说明:
attrib
ElementTree
成员实现为dict
对象,这意味着您可以在其上使用任何标准字典方法。