在Python3中,可以使用xml.etree.ElementTree模块解析XML文档。XPath是一种用于在XML文档中查找信息的语言,xml.etree.ElementTree模块支持XPath语法。本文将详细讲解Python3中xml.etree.ElementTree支持的XPath语法,包括两个示例。
XPath语法
XPath是一种用于在XML文档中查找信息的语言。XPath使用路径表达式来选择XML文档中的节点或节点集合。XPath路径表达式可以包含以下内容:
- 节点名称:选择指定名称的节点。
- 路径:选择指定路径的节点。
- 谓语:选择满足指定条件的节点。
- 通配符:选择所有节点或指定类型的节点。
- 轴:选择与当前节点相关的节点。
XPath路径表达式可以使用以下符号:
- /:选择根节点。
- //:选择任意节点。
- .:选择当前节点。
- ..:选择当前节点的父节点。
- @:选择属性。
XPath谓语可以使用以下符号:
- =:等于。
- !=:不等于。
- <:小于。
-
:大于。
- <=:小于等于。
-
=:大于等于。
- and:逻辑与。
- or:逻辑或。
- not:逻辑非。
示例一:选择指定名称的节点
以下是一个示例代码,演示如何使用XPath选择指定名称的节点:
import xml.etree.ElementTree as ET
xml_data = '''
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J.K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
'''
root = ET.fromstring(xml_data)
books = root.findall('./book')
for book in books:
title = book.find('title').text
author = book.find('author').text
print(title, author)
在上面的代码中,我们定义了一个名为xml_data的变量,它包含XML数据。然后,我们使用ET.fromstring函数将XML数据解析为Element对象,并使用XPath表达式'./book'选择所有book节点。最后,我们遍历所有book节点,并使用find函数选择title和author节点,并打印它们的文本内容。
示例二:选择满足指定条件的节点
以下是一个示例代码,演示如何使用XPath选择满足指定条件的节点:
import xml.etree.ElementTree as ET
xml_data = '''
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J.K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
'''
root = ET.fromstring(xml_data)
books = root.findall("./book[@category='cooking']")
for book in books:
title = book.find('title').text
author = book.find('author').text
print(title, author)
在上面的代码中,我们定义了一个名为xml_data的变量,它包含XML数据。然后,我们使用ET.fromstring函数将XML数据解析为Element对象,并使用XPath表达式"./book[@category='cooking']"选择所有category属性为'cooking'的book节点。最后,我们遍历所有book节点,并使用find函数选择title和author节点,并打印它们的文本内容。
总结
本文详细讲解了Python3中xml.etree.ElementTree支持的XPath语法,包括XPath路径表达式、XPath谓语和XPath符号。XPath语法可以用于在XML文档中查找信息。在Python3中,可以使用xml.etree.ElementTree模块解析XML文档,并使用XPath语法选择XML文档中的节点或节点集合。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3 xml.etree.ElementTree支持的XPath语法详解 - Python技术站