我一直在尝试解析伦敦地铁 Linestatus XML“提要”——但收效甚微。我原以为使用 XPath 会“容易”,但我得到了空节点。
我相当确定我没有正确处理 uk 命名空间。
这是我的(相当简单的代码):
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。
有人可以对此有所了解。
最佳答案
您需要在命名空间 URI 的末尾添加一个正斜杠。正确的 URI 是 http://webservices.lul.co.uk/
.
关于Python XPath/libxml2 命名空间查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8566111/