我使用lxml來解析xml數據。我必須在各個節點上分割xml,並在每個這些子樹中寫入數據以分離文件。 lxml在_ElementTree類中提供了write()方法,該方法可方便地將由分析樹表示的xml寫入文件。lxml:如何從樹中給定元素創建新元素樹
因此,如果我可以通過給定節點的子樹的根節點創建樹(_ElementTree對象),那麼我可以很容易地使用write()方法。怎麼做。
我使用lxml來解析xml數據。我必須在各個節點上分割xml,並在每個這些子樹中寫入數據以分離文件。 lxml在_ElementTree類中提供了write()方法,該方法可方便地將由分析樹表示的xml寫入文件。lxml:如何從樹中給定元素創建新元素樹
因此,如果我可以通過給定節點的子樹的根節點創建樹(_ElementTree對象),那麼我可以很容易地使用write()方法。怎麼做。
你不需要爲了寫一個元素,它的內容到一個文件中創建一個新的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
對不起,我找到了答案。它:
new_tree = etree.ElementTree(node_in_tree)
你解決方案很優雅。謝謝:) – Xolve
不應該是etree.parse(fb,解析器)?否則分析器變量已過時 – kravietz
@kravietz:謝謝 - 對於XML解析,「解析器」不是必需的,事實上,所以我刪除了它,並檢查了示例仍然有效 –