【问题标题】:.text output from XML document with xml.etree.ElementTree使用 xml.etree.ElementTree 从 XML 文档输出 .text
【发布时间】:2021-03-11 11:37:37
【问题描述】:

我正在尝试解析 XML 文档,以便仅获取 tag 内的文本,但是当我测试打印节点时,它只显示方括号,这意味着我的命令 print(rede.text) 返回“AttributeError:‘list’对象没有属性‘text’”。为什么将 XML 内容存储为列表对象以及如何访问标签内的文本?

import os
from xml.etree import ElementTree
file_name = '19008-data.xml'
full_file = os.path.abspath(os.path.join('WP19_Protokolle_2018-2020',file_name))
dom = ElementTree.parse(full_file)
redner = dom.findall('rede')
print(redner)

输出:[]

import os
from xml.etree import ElementTree
file_name = '19008-data.xml'
full_file = os.path.abspath(os.path.join('WP19_Protokolle_2018-2020',file_name))
dom = ElementTree.parse(full_file)
redner = dom.findall('rede')
print(redner.text)

AttributeError: 'list' 对象没有属性 'text'

【问题讨论】:

    标签: python xml xml-parsing elementtree


    【解决方案1】:

    在官方文档https://docs.python.org/3/library/xml.etree.elementtree.html我们可以看到下面的解释:

    *Element.findall()* 仅查找带有标签且是当前元素的直接子元素的元素。 Element.find() 找到具有特定标签的第一个子元素,并且 Element.text 访问元素的文本内容。 Element.get() 访问元素的属性:

    for country in root.findall('country'):
        rank = country.find('rank').text
        name = country.get('name')
        print(name, rank)
    

    【讨论】:

      【解决方案2】:

      为什么将 XML 内容存储为列表对象以及如何访问标签内的文本?

      XML 内容不存储为列表。当我们查看Element.findall() 方法的文档时,我们看到它:

      返回一个列表,其中包含按文档顺序排列的所有匹配元素。

      在您的特定情况下,该方法找不到任何内容,因此返回了一个空列表。显然,您无法在不存在的元素内找到文本。

      【讨论】:

        猜你喜欢
        • 2023-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-27
        • 2012-02-18
        • 1970-01-01
        • 1970-01-01
        • 2022-01-18
        相关资源
        最近更新 更多