我正在尝试将整个XML块返回给控制器,以使它们作为XML文件下载。
from xml.etree import ElementTree as ET
@api.model
def _xml_download(self):
root = ET.Element("Test A")
doc = ET.Element("Test B")
root.append(doc)
return ET.ElementTree(root)
这是我的控制器:
class TestXMl(http.Controller):
@http.route('/xml/download/report', type='http', auth="user")
@serialize_exception
def sale_xml_download(self, model, id, filename=None, **kw):
filename = 'Test%s.xml'%('Test')
records= http.request.env['sale.order'].search([('some_attribute', '=', True)])
if records:
xml_record = http.request.env['sale.order']._xml_download()
else:
xml_record = 'Test'
filename = 'Test%s.xml'%('Test')
headers = [
('Content-Type', 'application/xml'),
('Content-Disposition', content_disposition(filename)),
('charset', 'utf-8'),
]
return request.make_response(
xml_record, headers=headers, cookies=None)
但是我xml_record没有得到元素树。就是说TypeError: 'ElementTree' object is not iterable - - -
在这种情况下,我们假设如何传递elementTree。寻找有用的回复,在此先谢谢您
_xml_download
方法返回不可迭代的xml.etree.ElementTree.ElementTree
对象。
您可以在方法request.make_response的文档中找到:
param basestring data: response body
尝试返回ET.tostring(root)
请注意,将数据作为字符串列表进行传递应该有效