打印xml节点PythonXTree

打印xml节点PythonXTree,python,xml,elementtree,Python,Xml,Elementtree,对于此xml {BingMapsKey} 我正在打印每个位置的名称 import requests import xml.etree.ElementTree as ET url = 'http://dev.virtualearth.net/REST/v1/Locations?q=St%20Mard,%20FR&o=xml&key={BingMapsKey}' response = requests.get(url) with open('loc.xml', 'wb') as

对于此xml

{BingMapsKey}

我正在打印每个位置的名称

import requests
import xml.etree.ElementTree as ET

url = 'http://dev.virtualearth.net/REST/v1/Locations?q=St%20Mard,%20FR&o=xml&key={BingMapsKey}'

response = requests.get(url)
with open('loc.xml', 'wb') as file:
    file.write(response.content)

mytree = ET.parse('/Users/xxxxxxx/Desktop/pscripts/loc.xml')

name = mytree.findall('Name')

for n in name:

    n = name.text
    print (n)
我认为你不需要在解析文件之前先写一个文件?我的解决方案展示了一种可能的解决方案,我相信还有很多


简要说明:解码部分使二进制“字符串”成为ET可以使用的字符串。在findall部分中,我必须包含“.”以从根元素开始搜索,而“/”包含所有深度的所有相关节点。此外,还必须包括默认名称空间。希望这有帮助。

谢谢@Zug\u Bug。这是我使用python的第一步,非常感谢您的帮助。现在,我看到需要包括默认名称空间以及如何正确指定所需的节点。我首先下载xml的原因是,如果我使用来自web的请求执行此操作,我会得到以下编码错误(我使用的是与您完全相同的代码):UnicodeEncodeError:“ascii”编解码器无法对229位置的字符u'\xa9'进行编码:序号不在范围内(128)。。。。。。有什么想法吗?没关系,想出来了。似乎解码部分在Windows中需要,但在Mac或Linux平台上不需要()问题出在哪里?我可以在没有Bing地图键的情况下复制它吗?
import requests
import xml.etree.ElementTree as ET

url = 'http://dev.virtualearth.net/REST/v1/Locations?q=St%20Mard,%20FR&o=xml&key={BingMapsKey}  '

response = requests.get(url).content.decode("utf-8-sig")

mytree = ET.fromstring(response)

name = mytree.findall('.//{http://schemas.microsoft.com/search/local/ws/rest/v1}Name')

for n in name:
    print (n.text)