python - 使用 ElementTree 解析 XML 并出现自结束标记错误

标签 python xml elementtree

我有一些正在解析的 xml ElementTree我不认为除了我提供的 xml 行之外的结构/内容是相关的,所以我省略了它。

我将其解析为:Rwy.find('Special').text

当 xml 行为: <Special> </Special>

然后一切都按预期进行解析,但是当 xml 行改为:

<Special/>

它产生错误:TypeError: must be str, not NoneType这让我相信由于自结束标签而不是前面带有结束标签的示例而存在一些差异。

如何正确解析带有自结束标记的元素?

最佳答案

空白在 XML 中很重要。

比较:

>>> from xml.etree import ElementTree as et
>>> s = '<test><Special>   </Special></test>'
>>> tree = et.fromstring(s)
>>> tree.find('Special')
<Element 'Special' at 0x000001A7E9B154F8>
>>> tree.find('Special').text
'   '

对比:

>>> s = '<test><Special/></test>'
>>> tree = et.fromstring(s)
>>> tree.find('Special')
<Element 'Special' at 0x000001A7E9B1F638>
>>> tree.find('Special').text
>>>

第一个返回str。第二个返回None。自关闭标记中没有 .text 内容。

在使用.text之前检查它的返回值。

关于python - 使用 ElementTree 解析 XML 并出现自结束标记错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56029876/

相关文章:

c# - 来自 System.Xml.XmlReader(C# 和 .Net)的当前行号

xml - 在 XML 中添加多个元素

python - 如何在 Python 中排序 xml 元素属性?

python - 如何在 Pygame 中克隆 Sprite ?

python - 如何在一个文件的一行中输出 3 个项目?

c# - 更改数组元素的 XML 序列化程序的元素名称

Python - Elementtree - 使用变量搜索树

Python - ElementTree 库 - 按属性值搜索树

python - 在 PyDev 中获取交互式 Django shell

python - 在 Python 中将非英语单词转换为 % 分隔的字符串