您好,欢迎访问三七文档
XPath实例教程一、基本的XPath语法基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线/开始,那么该路径就表示到一个元素的绝对路径/AAA选择根元素AAAAAABBB/CCC/BBB/BBB/DDDBBB//DDDCCC//AAA/AAA/CCC选择AAA的所有CCC子元素AAABBB/CCC/BBB/BBB/DDDBBB//DDDCCC//AAA/AAA/DDD/BBB选择AAA的子元素DDD的所有子元素AAABBB/CCC/BBB/BBB/DDDBBB//DDDCCC//AAAXPath实例教程二、以双斜线//开头查询如果路径以双斜线//开头,则表示选择文档中所有满足双斜线//之后规则的元素(无论层级关系)//DDD/BBB选择所有父元素是DDD的BBB元素AAABBB/CCC/BBB/DDDBBB//DDDCCCDDDBBB///BBB选择所有BBB元素AAABBB/CCC/BBB/DDDBBB//DDDCCCDDDBBB/BBB//DDD/CCC/AAABBB//DDD/CCC/AAAXPath实例教程三、星号*表示选择所有由星号之前的路径所定位的元素/AAA/CCC/DDD/*选择所有路径依附于/AAA/CCC/DDD的元素AAAXXXDDDBBB/BBB/EEE/FFF//DDD/XXXCCCDDDBBB/BBB/EEE/FFF//DDD/CCCCCCBBBBBBBBB//BBB/BBB/CCC/AAA/*/*/*/BBB选择所有的有3个祖先元素的BBB元素AAAXXXDDDBBB/BBB/EEE/FFF//DDD/XXXCCCDDDBBB/BBB/EEE/FFF//DDD/CCCCCCBBBBBBBBB//BBB/BBB/CCC/AAA//*选择所有元素AAAXXXDDDBBB/BBB/EEE/FFF//DDD/XXXCCCDDDBBB/BBB/EEE/FFF//DDD/CCCCCCBBBBBBBBB//BBB/BBB/CCC/AAAXPath实例教程四、[]的作用方块号里的表达式可以进一步的指定元素,其中数字表示元素在选择集里的位置,而last()函数则表示选择集中的最后一个元素./AAA/BBB[1]选择AAA的第一个BBB子元素AAABBB/BBB/BBB/BBB//AAA/AAA/BBB[last()]选择AAA的最后一个BBB子元素AAABBB/BBB/BBB/BBB//AAAXPath实例教程五、属性//@id选择所有的id属性AAABBBid=b1/BBBid=b2/BBBname=bbb/BBB//AAA//BBB[@id]选择有id属性的BBB元素AAABBBid=b1/BBBid=b2/BBBname=bbb/BBB//AAA//BBB[@name]选择有name属性的BBB元素AAABBBid=b1/BBBid=b2/BBBname=bbb/BBB//AAA//BBB[@*]选择有任意属性的BBB元素AAABBBid=b1/BBBid=b2/BBBname=bbb/BBB//AAA//BBB[not(@*)]选择没有属性的BBB元素AAABBBid=b1/BBBid=b2/BBBname=bbb/BBB//AAAXPath实例教程六、属性2属性的值可以被用来作为选择的准则,normalize-space函数删除了前部和尾部的空格,并且把连续的空格串替换为一个单一的空格//BBB[@id='b1']选择含有属性id且其值为'b1'的BBB元素AAABBBid=b1/BBBname=bbb/BBBname=bbb//AAA//BBB[@name='bbb']选择含有属性name且其值为'bbb'的BBB元素AAABBBid=b1/BBBname=bbb/BBBname=bbb//AAA//BBB[normalize-space(@name)='bbb']选择含有属性name且其值(在用normalize-space函数去掉前后空格后)为'bbb'的BBB元素AAABBBid=b1/BBBname=bbb/BBBname=bbb//AAAXPath实例教程七、count()函数//*[count(BBB)=2]选择含有2个BBB子元素的元素AAACCCBBB/BBB/BBB//CCCDDDBBB/BBB//DDDEEECCC/DDD//EEE/AAA//*[count(*)=2]选择含有2个子元素的元素AAACCCBBB/BBB/BBB//CCCDDDBBB/BBB//DDDEEECCC/DDD//EEE/AAA//*[count(*)=3]选择含有3个子元素的元素AAACCCBBB/BBB/BBB//CCCDDDBBB/BBB//DDDEEECCC/DDD//EEE/AAAXPath实例教程八、name()函数name()函数返回元素的名称,start-with()函数在该函数的第一个参数字符串是以第二个参数字符开始的情况返回true,contains()函数当其第一个字符串参数包含有第二个字符串参数时返回true.//*[name()='BBB']选择所有名称为BBB的元素(这里等价于//BBB)AAABCCBBB/BBB/BBB//BCCDDBBBB/BBB//DDBBECCCC/DBD//BEC/AAA//*[starts-with(name(),'B')]选择所有名称以B起始的元素AAABCCBBB/BBB/BBB//BCCDDBBBB/BBB//DDBBECCCC/DBD//BEC/AAA//*[contains(name(),'C')]选择所有名称包含C的元素AAABCCBBB/BBB/BBB//BCCDDBBBB/BBB//DDBBECCCC/DBD//BEC/AAAXPath实例教程九、string-length函数string-length函数返回字符串的字符数,你应该用<替代,用>代替//*[string-length(name())=3]选择名字长度为3的元素AAAQ/SSSS/BB/CCC/DDDDDDDD/EEEE//AAA//*[string-length(name())3]选择名字长度小于3的元素AAAQ/SSSS/BB/CCC/DDDDDDDD/EEEE//AAA//*[string-length(name())3]选择名字长度大于3的元素AAAQ/SSSS/BB/CCC/DDDDDDDD/EEEE//AAAXPath实例教程十、分隔符|多个路径可以用分隔符|合并在一起//CCC|//BBB选择所有的CCC和BBB元素AAABBB/CCC/DDDCCC//DDDEEE//AAA/AAA/EEE|//BBB选择所有的BBB元素和所有是AAA的子元素的EEE元素AAABBB/CCC/DDDCCC//DDDEEE//AAA/AAA/EEE|//DDD/CCC|/AAA|//BBB可以合并的路径数目没有限制AAABBB/CCC/DDDCCC//DDDEEE//AAAXPath实例教程十一、descendant(后代)轴descendant(后代)轴包含上下文节点的后代,一个后代是指子节点或者子节点的子节点等等,因此descendant轴不会包含属性和命名空间节点./descendant::*选择文档根元素的所有后代.即所有的元素被选择AAABBBDDDCCCDDD/EEE//CCC/DDD/BBBCCCDDDEEEDDDFFF//DDD/EEE/DDD/CCC/AAA/AAA/BBB/descendant::*选择/AAA/BBB的所有后代元素AAABBBDDDCCCDDD/EEE//CCC/DDD/BBBCCCDDDEEEDDDFFF//DDD/EEE/DDD/CCC/AAA//CCC/descendant::*选择在祖先元素中有CCC的所有元素AAABBBDDDCCCDDD/EEE//CCC/DDD/BBBCCCDDDEEEDDDFFF//DDD/EEE/DDD/CCC/AAA//CCC/descendant::DDD选择所有以CCC为祖先元素的DDD元素AAABBBDDDCCCDDD/EEE//CCC/DDD/BBBCCCDDDEEEDDDFFF//DDD/EEE/DDD/CCC/AAAXPath实例教程十二、parent轴parent轴(axis)包含上下文节点的父节点,如果有父节点的话//DDD/parent::*选择DDD元素的所有父节点AAABBBDDDCCCDDD/EEE//CCC/DDD/BBBCCCDDDEEEDDDFFF//DDD/EEE/DDD/CCC/AAAXPath实例教程十三、ancestor轴ancestor轴(axis)包含上下节点的祖先节点,该祖先节点由其上下文节点的父节点以及父节点的父节点等等诸如此类的节点构成,所以ancestor轴总是包含有根节点,除非上下文节点就是根节点本身./AAA/BBB/DDD/CCC/EEE/ancestor::*选择一个绝对路径上的所有节点AAABBBDDDCCCDDD/EEE//CCC/DDD/BBBCCCDDDEEEDDDFFF//DDD/EEE/DDD/CCC/AAA//FFF/ancestor::*选择FFF元素的祖先节点AAABBBDDDCCCDDD/EEE//CCC/DDD/BBBCCCDDDEEEDDDFFF//DDD/EEE/DDD/CCC/AAAXPath实例教程十四、following-sibling轴following-sibling轴(axis)包含上下文节点之后的所有兄弟节点/AAA/BBB/following-sibling::*AAABBBCCC/DDD//BBBXXXDDDE
本文标题:XPath实例教程
链接地址:https://www.777doc.com/doc-2857507 .html