0

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

1 回答 1

1

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

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

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

于 2014-11-04T22:46:46.330 回答