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

时间:2011-03-11 17:57:29

标签: python lxml

我正在使用lxml来解析xml数据。我必须在各个节点划分xml,并将每个子树中的数据写入单独的文件。 lxml在_ElementTree类中提供了write()方法,可以方便地将解析树表示的xml写入文件。

因此,如果我可以通过给定节点的子树的根节点创建树(_ElementTree对象),那么我可以轻松地使用write()方法。怎么做。

2 个答案:

答案 0 :(得分:6)

很抱歉打扰,我找到了答案。其:

new_tree = etree.ElementTree(node_in_tree)

答案 1 :(得分: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