首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >xml.parsers.expat.ExpatError:格式不正确(令牌无效)

xml.parsers.expat.ExpatError:格式不正确(令牌无效)
EN

Stack Overflow用户
提问于 2018-02-16 15:10:25
回答 4查看 25.6K关注 0票数 15

当我使用xmltodict加载下面的xml文件时,我得到一个错误: xml.parsers.expat.ExpatError:不是格式良好的(无效标记):第1行,第1列

这是我的文件:

代码语言:javascript
复制
<?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>

来源:

代码语言:javascript
复制
import xmltodict
with open('fileTEST.xml') as fd:
   xmltodict.parse(fd.read())

我使用的是Windows 10,使用Python 3.6和xmltodict 0.11.0

如果我使用ElementTree,它可以工作

代码语言:javascript
复制
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编码的文件。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-08-27 17:28:51

我想你忘了定义编码类型了。我建议您尝试将该xml文件初始化为字符串变量:

代码语言:javascript
复制
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))
票数 12
EN

Stack Overflow用户

发布于 2018-02-16 17:57:31

xmltodict似乎无法解析<?xml version="1.0" encoding="utf-8"?>

如果您删除此行,它将正常工作。

票数 0
EN

Stack Overflow用户

发布于 2019-05-28 20:53:52

在我的例子中,问题出在前3个字符。因此,删除它们是可行的:

代码语言:javascript
复制
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:])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48821725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档