Python 在XML文档中搜索命名空间中的元素

Python 在XML文档中搜索命名空间中的元素,python,xml,python-2.7,elementtree,Python,Xml,Python 2.7,Elementtree,以下是我的代码: import requests import xml.etree.ElementTree as ET r = requests.get("http://www.volcano.si.edu/news/WeeklyVolcanoRSS.xml") tree = ET.fromstring(r.text.encode('utf-8')) for pt in tree.findall('.//georss:point'): print (pt.text) 问题是:被视为前

以下是我的代码:

import requests
import xml.etree.ElementTree as ET

r = requests.get("http://www.volcano.si.edu/news/WeeklyVolcanoRSS.xml")
tree = ET.fromstring(r.text.encode('utf-8'))
for pt in tree.findall('.//georss:point'):
    print (pt.text)
问题是
被视为前缀错误:

File "C:\Python27\lib\xml\etree\ElementPath.py", line 83, in xpath_tokenizer
raise SyntaxError("prefix %r not found in prefix map" % prefix)
SyntaxError: prefix 'georss' not found in prefix map
添加反斜杠以转义字符后:

for pt in tree.findall('.//georss\:point'):
…它给出了另一个错误:

SyntaxError: prefix 'georss\\' not found in prefix map

我应该怎么做呢?

XML标记中的冒号是一个XML名称空间

检查源文档中的属性,如
xmlns:georss=”“
。URL是您的命名空间


请参阅:

您需要通过向
findall()
方法添加参数来指定名称空间。试试这个:

import requests
import xml.etree.ElementTree as ET

r = requests.get("http://www.volcano.si.edu/news/WeeklyVolcanoRSS.xml")
tree = ET.fromstring(r.text.encode('utf-8'))
namespaces = {'georss' : 'http://www.georss.org/georss'}
for pt in tree.findall('.//georss:point', namespaces=namespaces):
    print (pt.text)

这不适用于Python2.6。还有别的办法吗?