从 xml 检索数据时出现索引错误

IndexError in retrieving data from xml

<ENTITY>
    <ENTITY_ADDRESS>
        <CITY> Pyongyang </CITY>
        <COUNTRY > Democratic People's Republic of Korea</COUNTRY>
    </ENTITY_ADDRESS>
</ENTITY>

我正在尝试使用 python 内置模块 xml 从上述 xml 文档中获取城市。代码如下:

from xml.dom import minidom

xml = minidom.parse('data.xml')

entities = xml.getElementsByTagName('ENTITY')

city = entities[0].getElementsByTagName("CITY")[0].firstChild.data

但是我收到这个错误:

File "G:/Sakib/Scrapy/xml_to_json/xml_to_json.py", line 4, in <module>
    city = entities[0].getElementsByTagName("CITY")[0].firstChild.data
IndexError: list index out of range

有没有人可以帮助我?

您错过了 ENTITY_ADDRESS。此外,您应该能够调用 nodeValue 来获取文本。

尝试:

    from xml.dom import minidom

    xml = minidom.parse('data.xml')
    
    entities = xml.getElementsByTagName('ENTITY')

    entities_address = entities[0].getElementsByTagName('ENTITY_ADDRESS')

    city = entities_address[0].getElementsByTagName("CITY")[0].firstChild.nodeValue.strip()

您也可以只搜索 CITY 来缩短代码:

xml = minidom.parse('data.xml')
city = xml.getElementsByTagName("CITY")[0].firstChild.nodeValue
print(city.strip())

输出:

Pyongyang