我有一个格式的XML文件:

<PlayersList>
  <player>
    <username>Someuser</username>
    <network>Somenetwork</network>
    <country>France</country>
    <blocked>False</blocked>
    <resetDate>NA</resetDate>
    <Stat1>1665</Stat1>
    <Stat2>-5.47</Stat2>
    <Stat3>15.07</Stat3>
    <Stat4>-16.8</Stat4>
    <Stat5>-9104.47</Stat5>
    <Stat6>25087.75</Stat6>
    <Stat7>17965.79</Stat7>
    <Stat8>2011-04-17 03:33</Stat8>
    <Stat9>28</Stat9>
    <Stat10>5.9</Stat10>
    <Stat11>283</Stat11>
    <Stat12>-33.6</Stat12>
    <Stat13>22.3</Stat13>
    <Stat14>460.4</Stat14>
    <Stat15>57.5</Stat15>
</player>
.
.
</PlayersList>

我正在尝试删除播放器的所有子节点。我选择想要的给定播放器元素
e= root.findall('player')[2]

然后尝试删除所有子项:
for child in e:
    e.remove(child)

但是,每次我运行此命令时,只有少数几个子节点被删除,不是全部!为什么?

我可以列出所有子标记及其文字,
for child in e:
    print child.tag+':'+child.text

最佳答案

这是因为您正在修改要迭代的元素。您可以将子元素存储在临时列表中,然后在其上进行迭代:

for child in list(e):
    e.remove(child)

这将删除所有子级。

关于python - 为什么ElementTree不删除所有子节点?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22404026/

10-09 07:26