ElementTree findall() 返回空列表

python

1个回答

写回答

宣融

2025-07-07 03:25

+ 关注

Python
Python

使用Python中的ElementTree模块可以方便地对XML文档进行解析和处理。其中的findall()方法可以根据指定的路径查找出符合条件的所有元素,并以列表的形式返回。然而,有时候我们可能会遇到返回空列表的情况,接下来我们将通过一个案例来说明这个问题。

假设我们有一个XML文档,其中包含了一些书籍的信息,我们想要提取出所有价格大于100的书籍。我们可以使用ElementTree的findall()方法来实现这个功能。下面是一个简单的示例代码:

Python

import XML.etree.ElementTree as ET

# 定义XML文档的内容

XML_data = '''

<books>

<book>

<title>Python编程入门</title>

<author>张三</author>

<price>80</price>

</book>

<book>

<title>Java从入门到精通</title>

<author>李四</author>

<price>120</price>

</book>

<book>

<title>数据结构与算法分析</title>

<author>王五</author>

<price>150</price>

</book>

</books>

'''

# 解析XML文档

root = ET.fromstring(XML_data)

# 查找价格大于100的书籍

books = root.findall("./book[price > 100]")

# 输出结果

if books:

for book in books:

print("书名:", book.find('title').text)

print("作者:", book.find('author').text)

print("价格:", book.find('price').text)

else:

print("没有找到符合条件的书籍")

上述代码首先定义了一个包含书籍信息的XML文档,然后使用ElementTree的fromstring()方法将其解析为一个根元素,接着使用findall()方法查找所有价格大于100的书籍,并将结果保存在一个列表中。最后,根据找到的书籍信息进行输出。

在这个例子中,我们使用了XPath语法来指定查找路径。XPath是一种用于在XML文档中定位元素的语言,通过指定元素的路径和条件,可以精确地定位到目标元素。

如果没有找到符合条件的书籍,findall()方法将返回一个空列表。这种情况下,我们可以通过判断列表是否为空来处理相应的逻辑。

案例代码:

Python

import XML.etree.ElementTree as ET

# 定义XML文档的内容

XML_data = '''

<books>

<book>

<title>Python编程入门</title>

<author>张三</author>

<price>80</price>

</book>

<book>

<title>Java从入门到精通</title>

<author>李四</author>

<price>120</price>

</book>

<book>

<title>数据结构与算法分析</title>

<author>王五</author>

<price>150</price>

</book>

</books>

'''

# 解析XML文档

root = ET.fromstring(XML_data)

# 查找价格大于100的书籍

books = root.findall("./book[price > 100]")

# 输出结果

if books:

print("<strong>找到符合条件的书籍:</strong>")

for book in books:

print("<strong>书名:</strong>", book.find('title').text)

print("<strong>作者:</strong>", book.find('author').text)

print("<strong>价格:</strong>", book.find('price').text)

else:

print("<strong>没有找到符合条件的书籍</strong>")

在上述案例代码中,我们在输出结果的前面添加了一个标题标签,使其在输出时更加突出。这样可以方便读者快速定位到重要信息。同时,我们也在没有找到符合条件的书籍时添加了相应的提示信息,以增强程序的健壮性。

一下,ElementTree的findall()方法可以方便地查找XML文档中符合条件的元素,并以列表的形式返回。在使用findall()方法时,需要注意处理返回空列表的情况,以避免出现错误。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号