Python XPath/libxml2 命名空间查询

标签 python xpath namespaces libxml2 contextpath

我一直在尝试解析伦敦地铁 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/

相关文章:

python - 再次来自用户的 check_password()

python - Zeromq ROUTER,DEALER消息编码格式

python - 使用text(),有没有办法用scrapy将空文本转换为 'None'

c# - 从 WebBrowserControl 中单击的 HtmlElement 获取 XPath

python - 读取带有限制和偏移量的 CSV 文件

python - 如何在 python 的碎片中编码字符?

javascript - 简单的 JavaScript XPath 语法模式验证器(无上下文)?

c# - 在项目中嵌套项目?

c++ - 即使在使用命名空间指令后也没有歧义引用错误

c++ - 为什么 `using A::f` 没有按预期工作?