使用Python保存GET调用的XML响应
我正在尝试使用API创建一个实时报告,该API允许我获取所需的数据并以XML格式返回。我想知道的是,在收到响应后,如何在本地将其保存到.xml文件中?或者缓存它,这样我可以在解析响应之前解析它使用Python保存GET调用的XML响应,python,xml,save,python-requests,parsexml,Python,Xml,Save,Python Requests,Parsexml,我正在尝试使用API创建一个实时报告,该API允许我获取所需的数据并以XML格式返回。我想知道的是,在收到响应后,如何在本地将其保存到.xml文件中?或者缓存它,这样我可以在解析响应之前解析它 import requests r = requests.get('url', auth=('user', 'pass')) 我使用请求,因为在我看来这是打GET电话最简单的方法。另外,这是我的第一个问题,我刚刚开始学习Python,如果你们有点耐心的话,我将不胜感激。谢谢 我在看一个类似的问题,但对
import requests
r = requests.get('url', auth=('user', 'pass'))
我使用请求,因为在我看来这是打GET电话最简单的方法。另外,这是我的第一个问题,我刚刚开始学习Python,如果你们有点耐心的话,我将不胜感激。谢谢
我在看一个类似的问题,但对于JSON,不确定它是否也能起同样的作用
如果您希望能够在处理返回的XML之前对其进行解析,您的朋友是
import requests
import xml.etree.ElementTree as ET
r = requests.get('url', auth=('user', 'pass'))
tree = ET.parse(r.text)
root = tree.getroot()
否则,正如jordanm所评论的,您可以将其保存到一个文件中,然后使用它
with open('data.xml', 'w') as f:
f.write(r.text)
与Python3相关的注释很少(至少3.6版本): 1) 在请求中使用xml.etree.ElementTree时,使用fromstring而不是parse。r、 text返回字符串,xml.etree.ElementTree.parse用于文件
import requests
import xml.etree.ElementTree as ET
r = requests.get("https://xml.returning.uri")
root = ET.fromstring(r.text)
2) 这将创建一个元素对象作为根(不再是树)。因此,要将其写回,您需要将其制作为一棵树:
tree = ET.ElementTree(root)
tree.write("file.xml")
从文件中
xml.etree.ElementTree.parse(源代码,parser=None)
将XML节解析为元素树。源是包含XML数据的文件名或文件对象
xml.etree.ElementTree.fromstring(文本)
从字符串常量解析XML节。与XML()相同。文本是包含XML数据的字符串。返回一个元素实例
file.open('foo.xml')。write(r.text)
谢谢,我现在正在查看文档,非常有用。对不起,我没有资格投票给你。@JulioMontes如果答案足够,你可以单击投票按钮旁边的勾号将其标记为接受。如果你需要额外的帮助或提示,请在下面发表评论,我会帮你解决。或者你可以等一等,看看还有什么其他答案出现:)好吧,我会把这个打开(不确定是否允许),自己做一些挖掘,看看我能走多远,我不想把它全部交给我,不过我很感激。我想知道是否有办法让我得到回应,并能够选择打印什么。我知道当它的tree=ET.parse(r.text)
响应是整个XML。然而,我希望有选择性。我试着只使用tree=ET.parse(r)
,但我肯定遗漏了什么。@juliomontes你有例子吗?你是说像一个特殊的子标签?
tree = ET.ElementTree(root)
tree.write("file.xml")