2012-05-15 4 views
4

OS X 10.6.8, libxml 2-2.7.8, libxslt-1.1.26 및 python 2.6을 사용하여 여기에 링크 된 tumblrRestore.py 스크립트를 실행하려고합니다 :ExpatError : 요소가 없습니다. - Python 스크립트

https://github.com/hughsaunders/Tumblr-Restore/blob/master/tumblrRestore.py

충돌 이전에 성공적으로 실행되었고 76 개의 게시물이 복원되었습니다.

두 번째 실행시 ExpatError : 요소가 발견되지 않았으므로 성공적으로 실행할 수 없었습니다. 이제는이 오류가 발생합니다. 오류 텍스트 : 스크립트가 한 번 성공적으로 실행 된 이유는 아직 설명하지 않습니다하지만 내가, 내가 파이썬이나 LXML의 잘못 또는 경쟁 또는 오래된 버전을 가지고 있는지 궁금하네요

Tumblr Restore 
Traceback (most recent call last): 
File "tumblrRestore.py", line 264, in <module> 
cli.start() 
File "tumblrRestore.py", line 232, in start 
bp.parse() 
File "tumblrRestore.py", line 51, in parse 
postelement=ElementTree.fromstring(xml_string) 
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xml/etree/ElementTree.py", line 964, in XM 
return parser.close() 
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xml/etree/ElementTree.py", line 1254, in close 
self._parser.Parse("", 1) # end of data 
xml.parsers.expat.ExpatError: no element found: line 1, column 0 

.

완전한 초보자, 어떤 조언을 부탁드립니다.

+1

체크 파일의 인코딩을. 어쩌면 BOM 마크가 있거나 뭔가 못생긴 것일 수도 있습니다. 오류 메시지는'xml_string'의 첫 번째 문자가 만족스럽지 않은 것처럼 들립니다. –

+0

감사합니다. 유니 코드 UTF-8을 BOM없이 수신하려고 시도했지만 정확히 동일한 오류가 발생했습니다. 또한 왜 처음에는 제대로 실행되었지만 다음 번에는 발생하지 않을지 궁금합니다. – user1395079

답변

0

extract_xml_string 방법을 BackupParser 클래스로 확인하십시오. begin_re 정규 표현식이 xml 헤더와 일치하지 않으므로 반드시 빈 문자열을 반환합니다.

다음 하나의 시도 :

begin_re = re.compile("<\? xml .*\?>")