【问题标题】:LXML etree add existing (parsed) Element as SubElement to another (parsed) ElementLXML etree 将现有(已解析)元素作为子元素添加到另一个(已解析)元素
【发布时间】:2020-06-16 13:58:07
【问题描述】:

我有两个 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 的问题。这是一个如何在保留现有数据结构的同时将现有元素添加到另一棵树的问题。

【问题讨论】:

    标签: python xml parsing lxml elementtree


    【解决方案1】:

    我应该更彻底地阅读文档。

    provides the following method 的 etree 库Element

    附加(子元素) 将元素子元素添加到该元素的内部子元素列表的末尾。 如果子元素不是元素,则引发 TypeError。

    因此,要将现有的 xml_2_node 添加到新的 xml_1 结构中:

    xml_1.append(xml_2_node)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 2017-06-02
      相关资源
      最近更新 更多