Der*_*ick 1 python elementtree
尝试从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")
Run Code Online (Sandbox Code Playgroud)
您正在循环不是根的直接子元素的元素.你需要去直接父级的引用代替.
使用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)
Run Code Online (Sandbox Code Playgroud)
我添加了一个额外的循环,它找到包含Transforms至少一个class元素的所有元素.
如果您要使用lxml,那么您可以使用class2.getparent().remove(class2).