Python XPath 运算符的种类及其功能
Python XPath 运算符主要分为以下几类:
-
路径表达式运算符
-/:从根节点开始选取,如/bookstore/book选取根节点下的bookstore节点下的所有book节点。
-//:选取节点下的所有子节点,如//book选取所有book节点。
-.:选取当前节点,如./book选取当前节点下的book节点。
-..:选取当前节点的父节点,如../bookstore选取当前节点的父节点下的bookstore节点。
-@:选取属性节点,如//book[@category]选取所有拥有category属性的book节点。 -
逻辑运算符
-and:与运算,如//book[price>35 and @category='CHILDREN']选取所有价格大于35且类别为CHILDREN的book节点。
-or:或运算,如//book[price>35 or @category='CHILDREN']选取所有价格大于35或类别为CHILDREN的book节点。
-not:非运算,如//book[not(@category='FICTION')]选取所有类别不是FICTION的book节点。 -
比较运算符
-=:等于,如//book[price=35]选取所有价格等于35的book节点。
-!=:不等于,如//book[price!=35]选取所有价格不等于35的book节点。
-<:小于,如//book[price<35]选取所有价格小于35的book节点。
->:大于,如//book[price>35]选取所有价格大于35的book节点。
-<=:小于等于,如//book[price<=35]选取所有价格小于等于35的book节点。
->=:大于等于,如//book[price>=35]选取所有价格大于等于35的book节点。 -
算术运算符
-+:加法,如//book[price+5]选取所有价格加5后的结果。
--:减法,如//book[price-5]选取所有价格减5后的结果。
-*:乘法,如//book[price*2]选取所有价格乘2后的结果。
-div:除法,如//book[price div 2]选取所有价格除2后的结果。
-mod:取余,如//book[count() mod 2=1]选取所有子节点数量为奇数的book节点。
代码演示:
from lxml import etree # 创建 XML 文档 xml = etree.XML('''<bookstore> <book category="CHILDREN"> <title lang="en">The Cat in the Hat</title> <author>Dr. Seuss</author> <year>1957</year> <price>29.99</price> </book> <book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="WEB"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore>''') # 执行 XPath 表达式 result = xml.xpath("//book[price>35]") # 输出结果 for book in result: print(book.xpath('title//text()')[0], book.xpath('price//text()')[0])
输出结果:
Learning XML 39.95
相关文章