Как мне принудительно загрузить xml в python?

#python #xml

#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" 
   ------------------------------^
  

Есть идеи?
Заранее спасибо за помощь!

Комментарии:

1. Что это за «это», которое выдает вам ошибку?

2. Единственное слово, имеющее отношение к вопросу в заголовке или тегах, — «python».

Ответ №1:

  1. Это не может быть код, который вы использовали для обслуживания XML, потому что "string" len(whatever) он гарантированно будет исключением.
  2. Вы добавляете две новые строки вместо одной в каждую строку заголовка, поэтому ваш заголовок будет содержать только первую строку. Заголовок и тело разделены двумя символами новой строки, вы помещаете две сразу после первого заголовка. Остальное отправляется в XML.
  3. Я бы не использовал print ни для чего, кроме простых текстовых форматов. HTTP не так прост (см. 3), вы должны использовать sys.stdout.write() вместо этого.
  4. Существуют десятки веб-фреймворков для Python. Вместо этого вам следует рассмотреть их. Некоторые из них очень просты, такие как Werkzeug и web.py .

Ответ №2:

Заголовки и полезная нагрузка всегда должны быть разделены пустой строкой. Строка заголовка content-length даже не содержит строки feed…in добавление целого числа (len()..) к строке выглядит странно.