2011-12-19 63 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/