尝试从 xml 文档中删除元素时出现以下错误。 “ValueError: list.remove(x): x 不在列表中” 这是代码,错误发生在删除的行上。
import xml.etree.ElementTree as ET
tree = ET.parse("AddInClasses.xml")
rootElem = tree.getroot()
for class2 in rootElem.findall("Transforms/class"):
name2 = class2.find("name")
if name2.text == "Get Field":
rootElem.remove(class2)
tree.write("AddInClassesTrimmed.xml")
请您参考如下方法:
您正在遍历不是根的直接子元素的元素。您需要获取对直接父级的引用而不是。
使用 ElementTree 就没那么容易了,元素上没有父指针。您需要先遍历 Transforms,然后再遍历 class:
for parent in rootElem.findall("Transforms[class]"):
for class2 in parent.findall("class"):
name2 = class2.find("name")
if name2.text == "Get Field":
parent.remove(class2)
我添加了一个额外的循环,用于查找所有至少包含一个 class 元素的 Transforms 元素。
如果您要改用 lxml,那么您可以只使用 class2.getparent().remove(class2)。
