2014-11-04 22 views
0

我想用lxml打开一个xml文件,编辑xml,然后保存出不同的版本,但我无法得到它的工作。第一次保存是为了删除该部分,但第二次保存是为了让他们进入,目前保存1正确删除部分,但保存2,这意味着将其留在。我做错了什么?下面是一个代码示例:Python lxml - 创建树的不同叉形

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

的问题是,tree1tree2是相同的对象(指向同一对象在内存中)。所以你不能修改一个变量而不修改其他变量。在例如:

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

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

+0

谢谢,使用tree1 = copy.deepcopy(tree)它工作的一种享受。 – speedyrazor 2014-11-05 06:19:22