【问题标题】:Parsing XML with ElementTree with self closing tag error使用 ElementTree 解析 XML 并出现自关闭标记错误
【发布时间】:2019-05-07 20:14:46
【问题描述】:

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

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

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

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

<Special/>

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

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

【问题讨论】:

    标签: python xml elementtree


    【解决方案1】:

    空白在 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的返回值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 2021-07-15
      • 2017-04-03
      • 2021-02-06
      • 2017-08-31
      相关资源
      最近更新 更多