pythonxmlfindall返回了错误的东西

2024-05-17 00:35:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从xml文件中读取数据,但返回的内容不对。 我只得到第一个子节点,而不是所有子节点

XML如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<medicalData>
        <pacijent>         #patient1
            <lbo>12345678901</lbo>
            <ime>bob</ime>
            <prezime>smith</prezime>
            <datumRodj>13.10.1954.</datumRodj>
            <pregledi>nema</pregledi>
        </pacijent>
        <pacijent>          #patient2
            <lbo>22345678901</lbo>
            <ime>bobert</ime>
            <prezime>smith</prezime>
            <datumRodj>30.03.2003</datumRodj>
            <pregledi>nema</pregledi>
        </pacijent>

        <lekar>
            <id>111</id>
            <ime>john</ime>
            <prezime>doe</prezime>
            <spacijalizacija>aaa</spacijalizacija>
        </lekar>
</medicalData>

在这里,如果我搜索一个病人,比如:

d = etree.parse("pacijent.xml")
listaPodataka = d.getroot()
pacijenti = {}
p = []
for podatak in listaPodataka.findall('pacijent'):
      p.append(podatak)
      for pacijent in p:
      lbo=pacijent[0].text
      ime = pacijent[1].text
      prezime = pacijent[2].text
      datumRodjenja = pacijent[3].text
      pregledi=pacijent[4].text


      pacijenti[lbo]=Pacijent(lbo,ime,prezime,datumRodjenja,pregledi)
return pacijenti

它会返回patient1,但不会返回patient2

你知道我做错了什么吗?我尝试过不同的解决方案,但似乎没有任何效果(从我尝试过的事情来看)


Tags: text节点xmlsmithimemedicaldatapatient1patient2
1条回答
网友
1楼 · 发布于 2024-05-17 00:35:22

这里(56605102.xml是从您的帖子中获取的xml)

import xml.etree.ElementTree as ET

root = ET.parse("56605102.xml")

for pacijent in root.findall('pacijent'):
    print(pacijent)
    for child in pacijent:
        print('\t' + child.tag + ':' + child.text)

输出

<Element 'pacijent' at 0x108d70d68>
    lbo:12345678901
    ime:bob
    prezime:smith
    datumRodj:13.10.1954.
    pregledi:nema
<Element 'pacijent' at 0x108f50868>
    lbo:22345678901
    ime:bobert
    prezime:smith
    datumRodj:30.03.2003
    pregledi:nema

相关问题 更多 >