Skip to main content
 首页 » 编程设计

Python ElementTree 从根目录中删除元素时出错

2025年05月04日9itcoder

尝试从 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)。