好吧,这开始让我有点发疯了。我已经尝试了几个用于 Python 的 xml/xpath 库,但无法找到一种简单的方法来获取臭名昭著的“标题”元素。
最新的尝试看起来像这样(使用 Amara):
def view(req, url):
req.content_type = 'text/plain'
doc = amara.parse(urlopen(url))
for node in doc.xml_xpath('//title'):
req.write(str(node)+'\n')
但这什么也没打印出来。我的 XML 看起来像这样: http: //programanddesign.com/feed/atom/
如果我尝试//*
而不是//title
它按预期返回所有内容。我知道 XML 里面有title
s,那么有什么问题呢?是命名空间还是什么?如果是这样,我该如何解决?
似乎无法让它在没有前缀的情况下工作,但这确实有效:
def view(req, url):
req.content_type = 'text/plain'
doc = amara.parse(url, prefixes={'atom': 'http://www.w3.org/2005/Atom'})
req.write(str(doc.xml_xpath('//atom:title')))