![](/img/trans.png)
[英]Add xml subelement with different namespaces than root element using lxml
[英]LXML etree add existing (parsed) Element as SubElement to another (parsed) Element
我有两个 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 的问题。 这是一个如何在保留现有数据结构的同时将现有元素添加到另一棵树的问题。
我应该更彻底地阅读文档。
etree 库为Element
提供了以下方法:
append(subelement) 将元素子元素添加到该元素的内部子元素列表的末尾。 如果子元素不是元素,则引发 TypeError。
因此,要将现有的xml_2_node
添加到新的xml_1
结构中:
xml_1.append(xml_2_node)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.