基础路径表达式:
| 表达式 | 描述 |
|---|---|
| / | 从根节点选取 |
| // | 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置 |
| . | 选取当前节点 |
| .. | 选取当前节点的父节点 |
| @ | 选取属性 |
| * | 选取所有 |
| | | 选取若干个路径(或的关系) |
实例:
| 表达式 | 详解 |
|---|---|
| /html | 注释:假如路径起始于正斜杠(/),则此路径始终代表到某元素的绝对路径; |
| /html/body | 选取html的子元素的所有body元素 |
| //div | 选取所有div子元素,而不管位置 |
| //body//div | 选取属于body元素的后代的所有div元素,而不管位置 |
| //@id | 选取有id属性的所有元素 |
| //body/div[last()-1] | 选取body下倒数第二个div元素 |
| //body/div[position()<3] | 选取位置小于3的div元素 |
| //body/div[1]/div[position()<2] | 选取body第一个div下的位置小于2的div元素 |
| //a[@id] | 选取所有具有id属性的a元素 |
| //a[@id='nav_default'] | 选取所有a元素,且id=nav_default |
| //body//div[span>223] | 选取body元素下所有div元素,且其中的span元素值大于223 |
| //body//div[span>22]/strong | 选取body子元素中的div元素下的所有strong元素,且其中的span元素值须大于22 |
| //a[@class='btn ban-default ml-5' or @role='button'] | 选取所有满足class,role是或关系的a元素 |
| //a[@class and @role] | 定位具备class\role属性的所有a标签 |
| //body/* | 匹配body下所有子标签 |
| //li|//ul | 选取所有的li元素和ul元素 |
| //span[text()='你好'] | 选取所有span内容为你好的标签 |
Xpath 轴
| 轴名称 | 结果 |
|---|---|
| ancestor | 选取当前节点的所有先辈 |
| ancestor-or-self | 选取当前节点的所有先辈及当前节点本身 |
| attribute | 选取当前节点的所有属性 |
| child | 选取当前节点的所有子元素 |
| descendant | 选取当前节点的所有后代元素 |
| descendant-or-self | 选取当前节点的所有后代元素和自身 |
| following | 选取文档中当前节点的结束标签之后的所有节点 |
| following-sibling | 选取文档中当前节点的结束标签之后的所有同级节点 |
| namespace | 选取当前节点的所有命名空间节点 |
| parent | 选取当前节点的父节点 |
| preceding | 选取文档中,当前节点的开始标签之前的所有节点 |
| preceding-sibling | 选取当前节点之前的所有同级节点 |
| self | 选取当前节点 |
实例:
| 表达式 | 详解 |
|---|---|
| //*[@id='course']/child::ul | 选取id值为course的元素的所有ul子元素 |
| //div/attribute::id | 选取具有id属性的所有div元素 |
| //div[@id='course']/child::* | 选取id为course的元素的所有子元素 |
| //div[@id='course']/descendant::li | 选取id值为course的元素的所有后代li元素 |
| //*[@id='nav_default']/ancestor::li | 选择id为nav_default节点的所有li先辈 |
| //*[@id='nav_default']/parent::li | 选择id为nav_default节点的所有li父辈 |
| //*[@id='nav_default']/following::li | 选择id为nav_default节点结束之后的所有li标签 |
| //h4/a[1]/following-sibling::*/.. | 选取h4/a[1]标签结束后的同级节点的上一级节点 |









网友评论