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。还有别的办法吗?