调用 ElementTree.parse 时出现“XML 或文本声明不在实体开头:第 2 行,第 0 列”

问题描述 投票:0回答:3

ElementTree.parse()
在下面的简单示例中失败并出现错误

xml.etree.ElementTree.ParseError:XML 或文本声明不在实体开头:第 2 行,第 0 列

XML 看起来有效并且代码很简单,那么我做错了什么?

xmlExample = """
<?xml version="1.0"?>
<data>
    stuff
</data>
"""
import io
source = io.StringIO(xmlExample)
import xml.etree.ElementTree as ET
tree = ET.parse(source)
python xml elementtree
3个回答
40
投票

XML 字符串开头有一个 换行符,请将其删除:

xmlExample = """<?xml version="1.0"?>
...

或者,您可以只

strip()
XML 字符串:

source = io.StringIO(xmlExample.strip())

顺便说一句,您不必创建类似文件的缓冲区,而是使用

.fromstring()
来代替:

root = ET.fromstring(xmlExample)

8
投票

找到了...第一个元素前面的空格...


0
投票

导入 xml.etree.ElementTree 作为 ET

xml示例= ”“”

”“”

tree = ET.fromstring(xmlExample.strip())

你可以试试这个。这对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.