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
相关文章