【问题标题】:extract all xml child nodes提取所有 xml 子节点
【发布时间】:2014-08-07 15:48:34
【问题描述】:

我有一些具有以下结构的 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>

我想出的代码似乎将第一个合作者拉到一个 ok 并放入一个 '???'如果没有合作者,但如果有多个合作者,则没有其余的合作者,我不知道为什么。在这里查看类似的问题似乎表明它会起作用,但我显然误解了一些东西。这是我得到的:

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)

我哪里出错了?

【问题讨论】:

    标签: xml python-3.x


    【解决方案1】:

    问题在于 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-06
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多