2015-06-26 32 views
0

我試圖解析一些XML數據(賠率),有時某些元素可能不存在,所以即時通訊設法跳過它的某些部分,並繼續,但是,無論我做什麼,我都會繼續獲得列表索引超出範圍。Python的XML解析:如果一個元素不存在

for x in xmldoc: 
time = x.getElementsByTagName("event_datetimeGMT")[0].firstChild.data 
game_id = x.getElementsByTagName("gamenumber")[0].firstChild.data 
sport = x.getElementsByTagName("sporttype")[0].firstChild.data 

這段代碼將正常工作,如果event_datetimeGMT,gamenumber和sporttype ......但是假如有例如沒有datetimeGMT我不能讓它跳,並進入下一個遊戲......

回答

2

您嘗試訪問所有元素的列表中的第一個元素event_datetimeGMT,如果列表爲空,這當然會導致索引錯誤。無論如何,有兩個基本的解決方案。

第一:

for x in xmldoc: 
    times = x.getElementsByTagName("event_datetimeGMT") 
    if times: 
     time = times[0].firstChild.data 
    ... 

二:

for x in xmldoc: 
    try: 
     x.getElementsByTagName("event_datetimeGMT")[0].firstChild.data 
    except IndexError: 
     pass 
    ... 

只是讓PROGRAMM知道如何處理這種情況,如果沒有的元素。

+0

第一個很好,但我不會推薦第二個方法 – har07

+0

爲什麼不,如果我可以問? python允許流量控制嘗試,除了 –

+0

我自己採取了第二種方法 –