【问题标题】:IndexError in retrieving data from xml从 xml 检索数据时出现 IndexError
【发布时间】:2021-03-27 03:44:56
【问题描述】:
<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

有没有人可以帮助我?

【问题讨论】:

    标签: python python-3.x xml xml-parsing


    【解决方案1】:

    您错过了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
    

    【讨论】:

    • 它说:AttributeError: 'NodeList' object has no attribute 'getElementsByTagName'
    • 抱歉,小错误,我已经更新了答案
    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多