Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PythonElementTree:如何在非常特定的位置添加子元素?_Python_Xml_Elementtree - Fatal编程技术网

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

PythonElementTree:如何在非常特定的位置添加子元素?,python,xml,elementtree,Python,Xml,Elementtree,我想在xml文件中添加一个子元素,但要放在非常特定的位置,而不是附加到末尾 标准方法是: subi = ET.SubElement(root[0][0], 'subi') 这很好 但是:假设root[0][0]已经有两个子项,因此可以通过root[0][0][0]和root[0][0][1]访问 我希望“subi”成为新的中间子级root[0][0][1],使原来的第二个子级成为第三个子级root[0][0][2] 有办法吗?(我对生活和自然的体验可能会说不,但我对python=)有很高的期望

我想在xml文件中添加一个子元素,但要放在非常特定的位置,而不是附加到末尾

标准方法是:

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

但是:假设root[0][0]已经有两个子项,因此可以通过root[0][0][0]和root[0][0][1]访问

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

有办法吗?(我对生活和自然的体验可能会说不,但我对python=)有很高的期望。

你们可以使用这个方法。它允许您指定索引

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

>将xml.etree.ElementTree作为ET导入
>>>
>>>root=ET.fromstring(“”)
... 
...     
...     
...     
... 
... ''')
>>>
>>>new=ET.Element('new')
>>>root.insert(2,新)#>>打印(ET.tostring(root))

这很有帮助,谢谢。然而,为了准确地得到我想要去的地方,我发现可以将其修改为root[index].insert(position,element)。没有[索引]时,我无法精确定位。-->但插入是我一直在寻找的东西!
>>> 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>