Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python保存GET调用的XML响应_Python_Xml_Save_Python Requests_Parsexml - Fatal编程技术网

使用Python保存GET调用的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,如果你们有点耐心的话,我将不胜感激。谢谢 我在看一个类似的问题,但对

我正在尝试使用API创建一个实时报告,该API允许我获取所需的数据并以XML格式返回。我想知道的是,在收到响应后,如何在本地将其保存到.xml文件中?或者缓存它,这样我可以在解析响应之前解析它

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")