2014-09-13 331 views
2

我想添加一个子元素到一个XML文件,但在一个非常具体的位置,不附加到结束。Python ElementTree:如何添加SubElement在非常特定的位置?

的标准方法是:

subi = ET.SubElement(root[0][0], 'subi') 

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

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

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

回答

2

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

例如,要插入的第三前(指数: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> 
+0

即是有帮助的,谢谢。但是,为了准确地获得我想要去的位置,我发现可以将其修改为root [index] .insert(position,element)。没有[索引]我无法精确瞄准。 - >但插入是我一直在寻找的东西! – sibert 2014-09-14 10:51:32

相关问题