Xpath与lxml_2XPath语法
来源:互联网 发布:php ios aes加密解密 编辑:程序博客网 时间:2024/04/30 15:21
XPath使用路径表达式选择节点。
以下XML文档作为示例:
xml='''<?xml version="1.0" encoding="utf8"?><bookstore> <book> <title lang="eng">Harry Potter</title> <price>29.99</price> </book> <book> <title lang="eng">Learning XML</title> <price>39.95</price> </book></bookstore>'''
一、选择节点
以下是基本路径的表达式,XPath的路径表达式都是基于某个节点之上的。
表达式描述nodename选取匹配节点nodename的所有子元素节点/若以/开头,表示以根节点作为选取起点//在已匹配节点后代中选取节点,不考虑目标节点的位置.选取当前节点..选取当前节点的父元素节点@选取属性举例:
from lxml import xpath# 得到根节点root=etree.fromstring(xml)# 选取所有book子元素root.xpath('book')# 选取根节点bookstoreroot.xpath('/bookstore')# 选取所有book子元素的title子元素root.xpath('book/title')# 以根节点为始祖,选取其后代中所有title元素,不管其在文档中的位置root.xpath('//title')# 以book子元素作为始祖,选取后代中的所有price元素root.xpath('book//price')# 以根节点为始祖,选取其后代中lang的所有属性root.xpath('//@lang')
二、谓语predicate
用以查找某个特定的节点或符合某种条件的节点,谓语表达式位于方括号中。
举例:
# 选取属于bookstore子元素的第一个book元素root.xpath('/bookstore/book[1]')# 选取属于bookstore子元素的最后一个book元素root.xpath('/bookstore/book[last()]')# 选取属于bookstore子元素的倒数第二个book元素root.xpath('bookstore/book[last()-1]')# 选取属于bookstore子元素的前两个book元素root.xpath('/bookstore/book[position()<3]')# 以根节点为始祖,选取其后代所有含有lang属性的title元素root.xpath('//title[@lang]')# 以根节点为始祖,选取其后代所有的title元素,且这些元素拥有值为eng的lang属性root.xpath('//title[@lang="eng"]')# 选取bookstore中所有book子元素,且book的price子元素的值大于35root.xpath('/bookstore/book[price>35.00]')# 选取bookstore中所有book子元素的title子元素,且book的price的值大于35root.xpath('/bookstore/book[price>35.00]/title')
三、通配符
通配符描述*匹配任何元素节点@*匹配任何属性节点node()匹配任何类型的节点举例:
# 选取 bookstore 所有子元素>>> root.xpath('/bookstore/*') # 选取根节点的所有后代元素>>> root.xpath('//*') # 选取根节点的所有具有属性节点的title元素>>> root.xpath('//title[@*]') # 选取当前节点下所有节点。'\n '是文本节点。>>> root.xpath('node()') # 选取根节点所有后代节点,包括元素、属性、文本。>>> root.xpath('//node()')
四、或条件选取
使用|运算符,选取符合或条件的若干路径。
举例:
# 选取所有book元素的title元素和price元素>>> root.xpath('//book/title | //book/price')# 选择所有title和price元素>>> root.xpath('//title|//price')# 选择book子元素title或者全部的price元素>>> root.xpath('/bookstore/book/title | //price')
0 0
- Xpath与lxml_2XPath语法
- [XPath/Python] XPath 与 lxml (二)XPath 语法 - iFantasticMe
- python xpath语法与lxml库
- Xpath语法与lxml库的用法
- xPath语法
- XPath语法
- xpath语法
- XPath 语法
- XPath语法
- XPath 语法
- XPath 语法
- XPath 语法
- XPath 语法
- XPath 语法
- XPath 语法
- XPath 语法
- XPath语法
- XPath语法
- Android Studio使用Lint进行代码检查
- 进程、线程(面试一)
- 说说Android的广播(5) - 广播的历史
- Android Studio使用指南
- [bzoj2339][HNOI2011]卡农
- Xpath与lxml_2XPath语法
- 如何获取匿名内部类的数据
- C++实现多线程全局内存池(性能优化)
- java—异常处理机制
- Axure教程网
- UILabel 高度的自适应与获取
- SendInput模拟键盘操作
- Axure教程 axure新手入门基础(1)
- Code Craft 2016初赛的一点体会