首页 > 解决方案 > 使用 xml.etree.ElementTree 从 XML 文档输出 .text

问题描述

我正在尝试解析 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:“列表”对象没有属性“文本”

从 XML 文档中提取

标签: pythonxmlxml-parsingelementtree

解决方案


在官方文档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)

推荐阅读