lxml:如何从树中给定元素创建新的元素树
我正在使用 lxml 来解析 XML 数据。我需要在不同的节点处将 XML 数据分开,并把每个子树中的数据写入不同的文件。lxml 提供了一个叫做 write() 的方法,这个方法在 _ElementTree 类中,可以方便地将解析树表示的 XML 写入文件。
所以,如果我能通过给定节点的子树的根节点来创建一个树(_ElementTree 对象),那么我就可以轻松地使用 write() 方法。请问该怎么做呢?
2 个回答
9
抱歉打扰大家,我找到了答案。就是:
new_tree = etree.ElementTree(node_in_tree)
4
你不需要创建一个新的ElementTree来把一个元素及其内容写入文件。你可以直接使用etree.tostring(element)
的结果来写入,比如:
from lxml import etree
with open("whatever.xml") as fp:
tree = etree.parse(fp)
i = 0
for node in tree.xpath('//section'):
output_filename = "output-%d.xml" % (i,)
with open(output_filename,"w") as fp:
fp.write(etree.tostring(node))
i += 1