我编码受到挑战,所以这可能很简单,但我被卡住了。
我正在尝试解析通过电子邮件发送到App Engine的新接收邮件功能的XML文件。首先,我只是将XML粘贴到消息正文中,并使用CElementTree解析它。然后我改为使用附件,并使用CElementTree解析它会产生此错误:
SyntaxError:格式不正确(令牌无效):第3行,第10列
我从正文中的电子邮件和附件中输出XML,它们看起来和我一样。我假设在框中粘贴它是以一种附加文件的方式更改编码,但我不知道如何解决它。
前几行看起来是这样的:
<?xml version="1.0" standalone="yes"?>
<gpx xmlns="http://www.topografix.com/GPX/1/0" version="1.0" creator="TopoFusion 2.85" xmlns:TopoFusion="http://www.TopoFusion.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.TopoFusion.com http://www.TopoFusion.com/topofusion.xsd">
<name><![CDATA[Pacific Crest Trail section K hike 4]]></name><desc><![CDATA[Pacific Crest Trail section K hike 4. Five Lakes to Old Highway 40 near Donner. As described in Day Hikes on the PCT California edition by George & Patricia Semb. See pages 150-152 for access and exit trailheads. GPS data provided by the USFS]]></desc><author><![CDATA[MikeOnTheTrail]]></author><email><![CDATA[michaelonthetrail@yahoo.com]]></email><url><![CDATA[http://www.pcta.org]]></url>
<urlname><![CDATA[Pacific Crest Trail Association Homepage]]></urlname>
<time>2006-07-08T02:16:05Z</time>
已编辑添加更多信息:
我有一个GPX个文件,里面有几千行。如果我将它粘贴到消息正文中,我可以正确解析它,如下所示:
gpxcontent = message.bodies(content_type='text/plain')
for x in gpxcontent:
gpxcontent = x[1].decode()
for event, elem in ET.iterparse(StringIO.StringIO(gpxcontent), events=("start", "start-ns")):
如果我使用Gmail将其作为附件附加到邮件中。然后像这样提取它:
if isinstance(message.attachments, tuple):
attachments = [message.attachments]
gpxcontent = attachments[0][3].decode()
for event, elem in ET.iterparse(StringIO.StringIO(gpxcontent), events=("start", "start-ns")):
我收到上面的错误。第3行第10列似乎是第一行的开头。[CDATA在第三行。
答案 0 :(得分:0)
以下是错误报告的链接:http://code.google.com/p/googleappengine/issues/detail?id=2289#c2