ExpatError:找不到元素 - Python脚本

时间:2012-05-15 03:04:26

标签: python elementtree expat-parser

使用OS X 10.6.8,libxml 2-2.7.8,libxslt-1.1.26和python 2.6,我试图运行链接在这里的tumblrRestore.py脚本:

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

它成功运行并在崩溃前恢复了76个帖子。

然而,在第二次运行时,我得到了一个ExpatError:没有找到任何元素,并且因为它现在无法成功运行它 - 它现在总是产生同样的错误。错误文字:

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

我想知道我是否有错误或竞争或过时的python或lxml版本,但这仍然无法解释为什么脚本成功运行一次。

完成新手,任何建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

检查extract_xml_string课程的BackupParser方法。它肯定会返回空字符串,因为你的begin_re常规表达式与xml标题不匹配。

尝试下一个:

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