如何在python中强制下载xml?

时间:2011-04-05 16:59:03

标签: python xml

我知道这有几个主题,但我找不到我做错了什么。 这是错误的代码:

   print 'Content-Type: text/xml \n'
   print 'Content-Disposition:attachment;filename="test.qwc" \n'
   print 'Content-Length:' + len(xml)
   print xml

xml变量只是一个xml字符串。 xml很好,因为我可以将它打印到浏览器中。但是当我添加Content-Disposition和Content-Length行时,它会给我这个错误:

   XML Parsing Error: not well-formed
   Location: http:/myurl/XMLqwc.py?franchiseid=1
   Line Number 1, Column 31:
   Content-Disposition:attachment;filename="test.qwc" 
   ------------------------------^

有什么想法吗? 在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

  1. 这不能是您用于提供XML的代码,因为"string" + len(whatever)保证是例外。
  2. 您要为每个标题行添加两个换行符而不是一个换行符,因此您的标题将仅包含第一行。标题和正文由两个换行符分隔,你在第一个标题后面放两个换行符。其余的转到XML。
  3. 我不会将print用于任何简单的文本格式。 HTTP不是那么简单(参见3),您应该使用sys.stdout.write()代替。
  4. 有几十个web frameworks for Python。你应该考虑他们。其中一些非常简单,例如Werkzeug和web.py。

答案 1 :(得分:2)

标题和有效负载必须始终用空行分隔。内容长度标题行甚至不包含换行符...此外,向字符串添加整数(len()..)看起来很奇怪。