Python 文件ElementTree开头的非法数据

Python 文件ElementTree开头的非法数据,python,xml,elementtree,Python,Xml,Elementtree,我正在尝试使用Python中的ElementTree库读取XML文件。我将XML文件简化为一个根目录: <ssf> </ssf> 在我的例子中,文件开头的非法数据是 您没有提到您正在使用的python。某些版本的python(在我的例子中是IronPyton)默认情况下不会以unicode格式打开文本文件。因此,如果您的文件保存为unicode文件(开头是BOM),open函数将BOM读取为某个字符,而不是检测编码的标志。这样,您将得到一个无效的xml字符串 这里有一种

我正在尝试使用Python中的ElementTree库读取XML文件。我将XML文件简化为一个根目录:

<ssf>
</ssf>

在我的例子中,文件开头的非法数据是

您没有提到您正在使用的python。某些版本的python(在我的例子中是IronPyton)默认情况下不会以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)

尝试删除文件并重新创建它,然后将此xml添加回其中。我猜你在第一行有某种不可见的元素。@AnandSKumar刚才试过了,我得到了同样的错误。试着用
open()
打开文件,然后打印每一行(通过迭代打开的文件),然后用打印的内容更新问题。(在python中执行此操作)@AnandSKumar我使用xml验证程序()运行了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)