【问题标题】:xml parsing issue encoding errorxml解析问题编码错误
【发布时间】:2016-06-11 02:10:43
【问题描述】:

我有一个这样的 xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<tw>
    <tweet>
        <yazi>atılacak tweet 1</yazi>
        <resim>resim.png</resim>
    </tweet>
    <tweet>
        <yazi>atılacak tweet 2</yazi>
        <resim>yok</resim>
    </tweet>
</tw>

我正在尝试阅读它

import xml.etree.ElementTree as ett

e = ett.parse("tweet.xml").getroot()

但我得到了这个错误,

xml.etree.ElementTree.ParseError:XML 中指定的编码 声明不正确:第 1 行,第 31 列

为什么?我该如何解决这个问题,我搜索了很多,xml文件看起来还可以。我不明白为什么我无法读取文件。

【问题讨论】:

  • 无法复制。我复制粘贴到一个文件并运行此代码没有问题。
  • @idjaw 我在 Windows 上工作时遇到此错误
  • 我无法复制您的错误。我将您粘贴的那个 XML 片段复制到了一个文件中。我复制了该代码并运行它,它对我来说工作正常。我无法重现您的错误。
  • 您将它们放入一个 XML 文件并运行没有错误?怎么会这样?为什么我会收到这个错误。
  • 唯一的区别是我不在Windows上。

标签: python xml-parsing python-3.4


【解决方案1】:

您的文件中可能包含无效的 utf-8 字符,例如xml 文件是 iso-8859-1 编码...或者您可以尝试使用 utf-8 而不是 UTF-8

【讨论】:

  • @GLHF-发布的 XML 是导致问题的原始文件吗?
【解决方案2】:
# -*- coding: utf-8 -*-

import xml.etree.ElementTree as ett


e = ett.parse("tweet.xml").getroot()

print(e.tag)

for altindakiler in e:
    print(altindakiler.tag, altindakiler.attrib)

【讨论】:

  • 这可能会修复错误,但并不能回答为什么它首先会发生的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 2014-04-08
相关资源
最近更新 更多