【发布时间】:2026-02-21 05:20:04
【问题描述】:
这是指向该 API 的链接,其 ID 由另一个 API 提供,它应该可以工作,但目前不能,因为他们还没有将其编入索引。问题是链接返回 200 和一个空的 xml 根。
我是 Python 的新手,但基本上问题是 ID 返回一个空的 XML 根,响应为 200,我可以看到它确实返回了一些东西但为空,并且 Elementtree 给了我错误:
带有response.text:
try:
xml = r.text
if xml:
root = ElementTree.parse(xml)
except ElementTree.ParseError:
有错误: FileNotFoundError: [Errno 2] 没有这样的文件或目录:'\n\n\n'
还尝试了字节:
try:
xml = r.content
if xml:
root = ElementTree.fromstring(xml)
except ElementTree.ParseError:
有错误: TypeError: Parser 必须是字符串或字符流,而不是 NoneType
我似乎无法触发捕获,因为它总是 200。如何在解析之前检查 xml 的有效性/存在性?
我有数以千计的文档要解析,而这个错误打破了这一切。
【问题讨论】:
-
例外情况下我刚刚有一个随机打印语句*
-
我不确定我是否完全理解您的问题,但总的来说,使用 try/except 进行流控制没有任何问题
-
@NomadMonad 这就是我的想法,但 IDK 为什么它没有按预期运行。基本上我只想解析返回的 xml,如果它是空的,请跳过它或忽略它。但是一直在尝试解析它
-
页面没有问题;它包含一个只有一个标签的有效格式的 xml 文档。所以这真的是你如何定义“空”的问题 - 比特定数量的标签短?不包含某些预期信息?等等。一旦你定义了它,应该很容易创建一个
if语句来跳过这种类型的页面。 -
@JackFleeting 你会怎么做?对我来说看起来也有效,所以它应该是可解析的,但是在它被解析为 xml 之前如何检查它?你看到我的问题>如果不先解析它,我无法检查有效性,也许我做错了什么?
标签: python xml python-requests elementtree