【问题标题】:Python ElementTree “no element found” exceptionPython ElementTree“找不到元素”异常
【发布时间】:2020-04-16 01:51:38
【问题描述】:

进口:

import io
import xml.etree.ElementTree as ElementTree

注意:我查看过其他线程关于这个相同的异常,他们都提到一个潜在的问题是 XML 文件可能格式错误;我非常确定我的格式很好,在多次检查后,然后通过在线验证器运行它只是为了仔细检查。

基本上,我无法在 io.StringIO 文件对象上调用 Python 的 ElementTree.parse() 函数。我知道此操作有效,因为以下代码(位于问题代码的正上方)有效:

testXMLInput = io.StringIO("<timedmile><miles>1</miles><minutes>1</minutes><seconds>1</seconds><month>1</month><day>1</day><year>1</year></timedmile>")
myElementTree = ElementTree.parse(testXMLInput)

但是,下面的代码不起作用:

xmlOutput = io.StringIO("<logdata><timedmiles></timedmiles></logdata>")
testElementTree = ElementTree.parse(xmlOutput)

我尝试在 timedmiles 元素中添加一个值,但这并没有阻止引发以下异常:

xml.etree.ElementTree.ParseError: no element found: line 1, column 0

问题可能是什么?文档和其他线程似乎没有提到此异常的另一个原因。

【问题讨论】:

  • 我无法重现该问题。你的两个样本都对我有用。顺便说一句,发布代码时请不要遗漏import 语句。
  • @mzjn 抱歉,现在将编辑以添加导入。感谢您的指点。奇怪的是它可以在你的机器上运行,而不是在我的机器上运行。不知道为什么它在我的机器上坏了。谢谢!
  • @mzjn 是的,XMLElements 是我的模块之一。将编辑导入 rn。

标签: python xml xml-parsing elementtree


【解决方案1】:

也许您使用了一些过时的 ElementTree 版本?

运行ElementTree.VERSION 获取版本。

我使用版本 1.3.0 并且没有收到您的错误(在这两种情况下)。 也许您应该升级您的软件?

我还有一句话:解析一个源文件后,结果是ElementTree类型。 但是要执行各种操作,您应该然后运行root = myElementTree.getroot()(这次结果是 Element 类型)并使用 就是这个 root 元素。

例如如果你运行ElementTree.tostring(...),第一个参数应该是 root,而不是 myElementTree

【讨论】:

    猜你喜欢
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    相关资源
    最近更新 更多