Python lxml - 创建不同的树叉

时间:2014-11-04 22:04:29

标签: python tree lxml xml.etree

我正在尝试使用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')

1 个答案:

答案 0 :(得分:1)

问题是tree1tree2是同一个对象(指向内存中的同一个对象)。因此,您无法修改一个变量而无需修改另一个变量。例如:

print tree1 == tree2  # True
print tree1 is tree2  # True

也许您可以先修改tree2而不修改它,然后保存tree1进行修改。或者也许使用复制功能来创建两个不同的对象。