我有一些xml具有以下结构,并且我试图将所有协作者字符串提取到列表中以供进一步分析
<sponsors>
<lead_sponsor>University of Erlangen-Nürnberg Medical School</lead_sponsor>
<collaborator>University Hospital Regensburg</collaborator>
<collaborator>Wuerzburg University Hospital</collaborator>
<collaborator>University Hospital, Essen</collaborator>
<collaborator>German Research Foundation</collaborator>
</sponsors>
我提出的代码似乎可以将第一个合作伙伴拉出来,然后放入一个&#39; ???&#39;如果没有合作者,但如果没有合作者,则不会是剩下的合作者,我无法弄清楚原因。在这里查看类似的问题似乎表明它可以工作,但我显然误解了一些东西。这就是我所拥有的:
tree = etree.parse(infile)
root = tree.getroot()
for elem in tree.iter(tag='sponsors'):
child = elem.find('collaborator')
if child is not None:
co = child.text
else:
co = "???"
collaborator.append(co)
print(co)
我哪里错了?
答案 0 :(得分:0)
问题是for循环没有迭代每个子元素,只是获得赞助商的第一个孩子并退出。 这些方面应该有用:
tree = etree.parse(infile)
root = tree.getroot()
for elem in tree.getiterator():
if elem.tag!='sponsors':
if elem.tag == 'collaborator':
co = elem.text
else:
co = "???"
collaborator.append(co)
print(co)