2009-10-20 3 views
0

인코딩이 어려워서 간단 할 수 있지만 막혔습니다.cElementTree 인코딩 문제가 유효하지 않습니다.

나는 새로운 수신 메일 기능인 App Engine으로 이메일 된 XML 파일을 구문 분석하려고합니다. 먼저, XML을 메시지 본문에 붙여 넣었고 CElementTree를 사용하여 파싱했습니다.

SyntaxError: not well-formed (invalid token): line 3, column 10

내가 몸과 첨부 파일로 이메일 전송 모두에서 출력을 XML을했습니다, 그들은 나에게 같은 모양 : 그럼 난 CElementTree와 함께 첨부 파일을 사용하고 구문 분석에 변경이 오류가 발생합니다. 상자에 붙여 넣는 것은 파일을 첨부하는 방식이 인코딩을 변경하는 것이지만 파일을 수정하는 방법을 모르겠다 고 가정합니다. 내가 몇 천 개 라인의 GPX 파일이

:

<?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[[email protected]]]></email><url><![CDATA[http://www.pcta.org]]></url> 
<urlname><![CDATA[Pacific Crest Trail Association Homepage]]></urlname> 
<time>2006-07-08T02:16:05Z</time> 

편집 더 많은 정보를 추가 할 :

처음 몇 줄

이 모양. 내가 메시지 본문에 붙여 넣을 경우 그래서 같이 올바르게 구문 분석 할 수 있습니다

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")): 

I 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.

+1

우리에게 더 많은 데이터를 제공하십시오 :

다음은 버그 리포트에 대한 링크입니다. 제공 한 샘플은을 추가 한 후 내 cElementTree에서 성공적으로 파싱되었습니다. –

+0

인코딩 문제가 있다고하지만 인코딩과 관련이없는 오류 메시지는 '형식이 올바르지 않습니다 (잘못된 토큰)'입니다. "첨부 파일 사용으로 변경했습니다"에 대해 자세히 설명하십시오. 정확히 cElementTree에 전달하는 것은 무엇이며 어떻게 수행합니까? 코드 표시. "3 행 10 열"은 정확히 무엇입니까? –

답변

관련 문제