我正在尝试使用Python中的ElementTree库读取XML文件。我已将XML文件一直简化为单个根目录:
<ssf>
</ssf>
该文件的扩展名为&#34; .ssf&#34;
当我尝试使用ET.parse(文件)读取文件时,出现以下错误:
异常:第1行的语法错误:文件开头的非法数据
我不确定我错过了什么。
代码:
def ssf(ssf_path):
tree = ET.parse(ssf_path);
root = tree.getroot();
答案 0 :(得分:0)
就我而言,文件开头的非法数据为BOM。
您没有提到要使用哪个python。某些版本的python(在我的情况下为Ironpyhton)默认情况下不会以Unicode格式打开文本文件。因此,如果文件另存为unicode文件(开头是BOM),则open
函数会将BOM读取为某些字符,而不是检测编码的标志。这样,您最终将获得无效的xml字符串!
这是解决问题的一种方法:打开文件并自己将其读取为字符串,然后解析该字符串:
import xml.etree.ElementTree
import io
path = '.\\file.ssf'
txt = ''
with io.open(path, 'r', encoding='utf-8') as o:
txt = o.read()
root = xml.etree.ElementTree.fromstring(txt)