Python ElementTree:如何在非常特定的位置添加子元素?

sib*_*ert 4 python xml elementtree

我想在一个xml文件中添加一个子元素,但是在一个非常具体的位置,而不是附加到最后。

标准方法是:

subi = ET.SubElement(root[0][0], 'subi')
Run Code Online (Sandbox Code Playgroud)

这很好。

但是:比方说,root[0][0] 已经有两个孩子,因此可以通过 root[0][0][0] 和 root[0][0][1] 访问。

并且我希望“subi”成为新的中间孩子root[0][0][1],使原来的第二个孩子成为第三个孩子root[0][0][2]。

有没有办法做到这一点?(我对生活和自然的经历会说不,但我对python寄予厚望=)

fal*_*tru 6

您可以使用Element.insert方法。它允许您指定索引。

例如,要在第 3 个(索引:2)元素之前插入:

>>> import xml.etree.ElementTree as ET
>>>
>>> root = ET.fromstring('''
... <root>
...     <first></first>
...     <second></second>
...     <third></third>
... </root>
... ''')
>>>
>>> new = ET.Element('new')
>>> root.insert(2, new)  # <-----------
>>> print(ET.tostring(root))
<root>
    <first />
    <second />
    <new /><third />
</root>
Run Code Online (Sandbox Code Playgroud)