簡體   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