1
我对python脚本语言非常陌生,最近正在研究解析基于web的xml文件的解析器。在用Python语言解析XML时无法访问子节点
我能够检索所有使用Python中的minidom但没有问题的元素之一,但我有一个节点,我遇到了麻烦。我从XML文件所需要的最后一个节点是“图像”标签中的“网址”,这可以在下面的XML文件示例中找到:
<events>
<event id="abcde01">
<title> Name of event </title>
<url> The URL of the Event <- the url tag I do not need </url>
<image>
<url> THE URL I DO NEED </url>
</image>
</event>
下面我抄我的代码简短的部分,我感觉可能是相关的。我真的很感谢任何帮助,以检索这最后的图像网址节点。我还将包括我尝试过的以及在GAE中运行此代码时收到的错误。我使用的Python版本是Python 2.7,我也许应该指出,我将它们保存在数组中(以便以后输入到数据库中)。
class XMLParser(webapp2.RequestHandler):
def get(self):
base_url = 'http://api.eventful.com/rest/events/search?location=Dublin&date=Today'
#downloads data from xml file:
response = urllib.urlopen(base_url)
#converts data to string
data = response.read()
unicode_data = data.decode('utf-8')
data = unicode_data.encode('ascii','ignore')
#closes file
response.close()
#parses xml downloaded
dom = mdom.parseString(data)
node = dom.documentElement #needed for declaration of variable
#print out all event names (titles) found in the eventful xml
event_main = dom.getElementsByTagName('event')
#URLs list parsing - MY ATTEMPT -
urls_list = []
for im in event_main:
image_url = image.getElementsByTagName("image")[0].childNodes[0]
urls_list.append(image_url)
错误我收到的是以下任何的帮助深表感谢,卡伦
image_url = im.getElementsByTagName("image")[0].childNodes[0]
IndexError: list index out of range
不要对数据进行解码和重新编码!将解码保留到XML解析器。任何你不能使用[ElementTree API](http://docs.python.org/2/library/xml.etree.elementtree.html)而不是minidom的理由? – 2013-04-20 08:08:30
该URL会为我返回错误响应;我收到一个'Authentication Error'消息。也许你也这样做? – 2013-04-20 08:11:07
嗨@MartijnPieters,我已经遗漏了这个例子的API key,就像我认为它会使它更简单一样。如果你觉得这样会更有用,我可以插入api键,但是我没有问题,它更像是访问图像标签的元素。由于xml数据中发现的黑星的编码问题,我必须解码并重新编码xml数据。 http://stackoverflow.com/questions/16026594/unicode-encoding-errors-python-parsing-xml-cant-encode-a-character-star/16073981?noredirect=1#16073981 – Karen 2013-04-20 09:25:18