当我使用xmltodict加载下面的xml文件时,我得到一个错误: xml.parsers.expat.ExpatError:不是格式良好的(无效标记):第1行,第1列
这是我的文件:
<?xml version="1.0" encoding="utf-8"?>
<mydocument has="an attribute">
<and>
<many>elements</many>
<many>more elements</many>
</and>
<plus a="complex">
element as well
</plus>
</mydocument>
来源:
import xmltodict
with open('fileTEST.xml') as fd:
xmltodict.parse(fd.read())
我使用的是Windows 10,使用Python 3.6和xmltodict 0.11.0
如果我使用ElementTree,它可以工作
tree = ET.ElementTree(file='fileTEST.xml')
for elem in tree.iter():
print(elem.tag, elem.attrib)
mydocument {'has': 'an attribute'}
and {}
many {}
many {}
plus {'a': 'complex'}
注意:我可能遇到了一个新的行问题。
Note2:我在两个不同的文件上使用了超越比较。
它在UTF-8 BOM编码的文件上崩溃,并在UTF-8文件上工作。
UTF-8 BOM是一个字节序列(EF、BB、BF),它允许读者识别以UTF-8编码的文件。
发布于 2019-08-27 17:28:51
我想你忘了定义编码类型了。我建议您尝试将该xml文件初始化为字符串变量:
import xml.etree.ElementTree as ET
import xmltodict
import json
tree = ET.parse('your_data.xml')
xml_data = tree.getroot()
#here you can change the encoding type to be able to set it to the one you need
xmlstr = ET.tostring(xml_data, encoding='utf-8', method='xml')
data_dict = dict(xmltodict.parse(xmlstr))
发布于 2018-02-16 17:57:31
xmltodict
似乎无法解析<?xml version="1.0" encoding="utf-8"?>
如果您删除此行,它将正常工作。
发布于 2019-05-28 20:53:52
在我的例子中,问题出在前3个字符。因此,删除它们是可行的:
import xmltodict
from xml.parsers.expat import ExpatError
with open('your_data.xml') as f:
data = f.read()
try:
doc = xmltodict.parse(data)
except ExpatError:
doc = xmltodict.parse(data[3:])
https://stackoverflow.com/questions/48821725
复制相似问题