如何将元素树传递给其他函数TypeError:'ElementTree'对象不可迭代---

问题描述 投票:0回答:1

我正在尝试将整个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。寻找有用的回复,在此先谢谢您

python-3.x odoo odoo-10 odoo-11 odoo-12
1个回答
0
投票

_xml_download方法返回不可迭代的xml.etree.ElementTree.ElementTree对象。

您可以在方法request.make_response的文档中找到:

param basestring data: response body

尝试返回ET.tostring(root)

请注意,将数据作为字符串列表进行传递应该有效

© www.soinside.com 2019 - 2024. All rights reserved.