我正在使用lxml来解析xml数据。我必须在各个节点划分xml,并将每个子树中的数据写入单独的文件。 lxml在_ElementTree类中提供了write()方法,可以方便地将解析树表示的xml写入文件。
因此,如果我可以通过给定节点的子树的根节点创建树(_ElementTree对象),那么我可以轻松地使用write()方法。怎么做。
答案 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