gpt4 book ai didi

python - 遍历 xml 在 python 中不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 09:12:43 24 4
gpt4 key购买 nike

我的 XML:

<animals>
<animal name="fox" fullname="fullfox"></animal>
<animal name="dog" fullname="halfdog"><food>milk</food><food>rice</food><food>meat</food> </animal>
<animal name="cow" fullname="doublecow"><food>grass</food></animal>
<animal name="blabla" fullname="fullbla"></animal>
</animals>

我正在尝试解析此 XML 以获得与输出相同的 XML。

doc    = ET.parse("an.xml")
root = doc.getroot() #Returns the root element for this tree.
root_new = ET.Element("animals")
for child in root:
name = child.attrib['name']
fullname = child.attrib['fullname']

for g in root.findall("*/food"):
animal = ET.SubElement(root_new, "animal")
food = ET.SubElement(animal, "food")
food.text = g.text
animal.set("name",name)
animal.set("fullname",fullname)

tree = ET.ElementTree(root_new)
tree.write(sys.stdout)

但我只得到最后一个值

<animals>
<animal fullname="fullbla" name="blabla"><food>milk</food></animal>
<animal fullname="fullbla" name="blabla"><food>rice</food></animal>
<animal fullname="fullbla" name="blabla"><food>meat</food></animal>
<animal fullname="fullbla" name="blabla"><food>grass</food></animal>
</animals>

食物节点也错了,如何像我输入的 XML 一样迭代?

最佳答案

你的代码应该是这样的

doc    = ET.parse("test.xml")
root = doc.getroot() #Returns the root element for this tree.
root_new = ET.Element("animals")
for child in root:
name = child.attrib['name']
fullname = child.attrib['fullname']
animal = ET.SubElement(root_new, "animal")
animal.set("name",name)
animal.set("fullname",fullname)

for g in child.findall("food"):
food = ET.SubElement(animal, "food")
food.text = g.text

tree = ET.ElementTree(root_new)
tree.write(sys.stdout)

关于python - 遍历 xml 在 python 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13228223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com