我正在尝试使用lxml打开一个xml文件,编辑xml然后保存出不同的版本,但我无法让它工作。第一个保存意味着删除该部分,但第二个保存意味着将它们保留,当前保存1正确删除该部分,但保存2也是如此,这意味着保留它。我做错了什么?这是一个代码示例:
from lxml import etree
parser = etree.XMLParser(remove_blank_text=True)
tree = etree.parse(pathToXmlFile, parser)
root = tree.getroot()
etree1 = etree
tree1 = tree
etree1.strip_elements(tree1, 'products')
tree1.write(pathToXmlFileOut1, pretty_print = True, xml_declaration = True, encoding = 'UTF-8')
etree2 = etree
tree2 = tree
tree2.write(pathToXmlFileOut2, pretty_print = True, xml_declaration = True, encoding = 'UTF-8')
答案 0 :(得分:1)
问题是tree1
和tree2
是同一个对象(指向内存中的同一个对象)。因此,您无法修改一个变量而无需修改另一个变量。例如:
print tree1 == tree2 # True
print tree1 is tree2 # True
也许您可以先修改tree2
而不修改它,然后保存tree1
进行修改。或者也许使用复制功能来创建两个不同的对象。