![](/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.