【发布时间】:2020-06-16 13:58:07
【问题描述】:
我有两个 XML 结构,xml_1 和 xml_2
xml_1 是我这样创建的结构:
xml_1 = etree.Element('xml_1_root')
xml_2 是我从现有 XML 数据中解析出来的结构:
xml_2 = etree.parse(xml_2.xml).getroot()
我想做这样的事情:
for node in xml_2.findall("node"):
etree.SubElement(xml_1, node)
这样node 中的所有结构都作为子结构添加到新创建的xml_1 结构中。
问题在于 SubElement 方法(显然)在这里不起作用,因为它是非预期用途。
我的问题是:lxml.etree 库是否有一种方法可以将现有(已解析)元素添加为子元素,从而保留任何属性、文本和子节点信息?
问题在于xml_2 中的许多节点都有子节点(其中许多也 有子节点),我宁愿避免递归到它们以精细地提取所有信息。
注意:这不是如何从头开始创建 etree SubElement 的问题。这是一个如何在保留现有数据结构的同时将现有元素添加到另一棵树的问题。
【问题讨论】:
标签: python xml parsing lxml elementtree