繁体   English   中英

LXML etree 将现有(已解析)元素作为子元素添加到另一个(已解析)元素

[英]LXML etree add existing (parsed) Element as SubElement to another (parsed) Element

我有两个 XML 结构, xml_1xml_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM