2011-12-19 75 views
0

我一直試圖解析倫敦地鐵Linestatus XML「feed」 - 很少成功。我預料到這將使用XPath「簡單」,但我得到空的節點。Python XPath/libxml2命名空間查詢

我相當確定我沒有正確處理英國的名字空間。

這裏是我的(而不是簡單的代碼):

import libxml2 
from urllib2 import urlopen 

data = urlopen('http://cloud.tfl.gov.uk/TrackerNet/LineStatus').read() 

try: 
    doc = libxml2.parseDoc(data) 
except (libxml2.parserError, TypeError): 
    print "Problems loading XML" 

context = doc.xpathNewContext() 
context.xpathRegisterNs("uk", "http://webservices.lul.co.uk") 

record_nodes = context.xpathEval('//uk:LineStatus') 

for node in record_nodes: 
    print "******************************" 

的record_nodes循環被忽略。 XML正在被正確解析。

有人可以請說明這一點。

+0

您沒有指定正確的(完整的)namespace-uri,因此試圖選擇不存在的名稱空間中的元素。 – 2011-12-19 19:36:02

回答

4

您需要在名稱空間URI的末尾添加正斜槓。正確的URI是http://webservices.lul.co.uk/