Python,从URL打开XML时出现:"列表索引超出范围
我还是个完全的新手,正在尝试用Python从一个网址打开一个XML文件,但遇到了一些问题。
这是我的代码(我在网上找到的一段代码):
# import library to do http requests:
from urllib.request import urlopen
#import easy to use xml parser called minidom:
from xml.dom.minidom import parseString
#all these imports are standard on most modern python implementations
#download the file:
file = urlopen('http://www.odaa.dk/storage/f/2014-04-28T12%3A49%3A26.677Z/lejemaal.xml')
#convert to string:
data = file.read()
#close file because we dont need it anymore:
file.close()
#parse the xml you downloaded
dom = parseString(data)
#retrieve the first xml tag (<tag>data</tag>) that the parser finds with name tagName:
xmlTag = dom.getElementsByTagName('tagName')[0].toxml()
#strip off the tag (<tag>data</tag> ---> data):
xmlData = xmlTag.replace('<tagName>', '').replace('</tagName>', '')
#print out the xml tag and data in this format: <tag>data</tag>
print(xmlTag)
#just print the data
print(xmlData)
当我运行这段代码时,出现了一个错误,提示:
Traceback (most recent call last):
File "/Users/-----/PycharmProjects/First/test.py", line 20, in <module>
xmlTag = dom.getElementsByTagName('tagName')[0].toxml()
IndexError: list index out of range
我在这里看到类似的讨论,似乎是我在尝试访问一个不存在的东西。或者是因为我复制的这段代码里有“tagName”?我需要修改这个吗?
我该怎么解决这个问题呢?我甚至不确定我想要什么结果,因为我只是想让代码有点反应。希望有人能给我指个方向 :)
1 个回答
1
其实你现在的代码已经能完成工作了(虽然没测试过)。
问题在于你的xml文件里没有叫做'tagName'的标签,所以python给你返回了一个空列表。
然后你试图从这个空列表里获取第一个元素,这就导致了IndexError错误。
你应该把'tagName'替换成你xml文档中实际存在的标签名,比如'row'。
你一般都知道你的xml文件里有哪些标签,因为你了解它的结构。 你也可以用python来编程获取这些标签的列表,使用下面的代码:
root = dom.documentElement
for node in root.childNodes:
print(node.tagName)
这段代码会打印出你文档根元素下所有节点的标签名(根元素是包含其他所有元素的第一个元素)。