lxml:如何从树中给定元素创建新的元素树

2 投票
2 回答
5499 浏览
提问于 2025-04-16 13:31

我正在使用 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

撰写回答