Django で実行されている次の Python コードがあります。
from django.http import HttpResponse
from django.shortcuts import render
from django.template import RequestContext, loader
from pptx import Presentation
import uuid
from lxml import etree, objectify
from xml.sax.saxutils import escape
def make(request):
information = '''<rss version="0.92"><channel><title>JIRA</title><description>An XML representation of a search request</description><language>en-us</language><issue start="0" end="6" total="6"/><build-info><version>6.1-OD-09-WN</version><build-number>6144</build-number><build-date>15-09-2013</build-date></build-info><item><summary>Purchase order submitted to Dell</summary><component>Summer Scaling</component></item></channel></rss>'''
tree = objectify.fromstring(information)
components = {}
for item in tree.channel.item:
component = str(item.component)
summary = str(item.summary).strip()
if component not in components:
components[component] = []
components[component].append(summary)
prs = Presentation()
slidelayout = prs.slidelayouts[1]
for component, summaries in components.iteritems():
slide = prs.slides.add_slide(slidelayout)
title = slide.shapes.title
title.text = str(component)
body = slide.shapes.placeholders[1]
first = True
for summary in summaries:
if first:
body.textframe.text = summary
first = False
else:
body.textframe.add_paragraph().text = summary
filename = '/home/ubuntu/src/jiraxmlapp/download/' + str(uuid.uuid1()) + 'update.pptx'
prs.save(filename)
f = open(filename, 'r')
ppt_content = f.read()
response = HttpResponse(ppt_content, content_type="application/vnd.openxmlformats-officedocument.presentationml.slideshow")
response['Content-Disposition'] = 'attachment; filename="status.pptx"'
return response;
実行すると、次のエラーが発生します。
Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/home/ubuntu/src/jiraxmlapp/pptmaker/views.py" in make
17. tree = objectify.fromstring(information)
Exception Type: XMLSyntaxError at /pptmaker/pptmaker/make/
Exception Value: None
w3school の Web サイトで XML の構文をテストしましたが、構文エラーはありません。XML 文字列を別の方法でフォーマットしようとしました...すべて 1 行にまとめたり、複数行にまたがったりしました。同じエラーが引き続き発生します。
さらにややこしいことに、シェル インタープリターから最初の 2 行 (information = .... および tree = ....) を実行すると、すべてが機能します。
髪を抜く準備ができました。どんな助けでも大歓迎です。