【C# XML】XPath-Xml Path


XPath

XPath 的意思是 XML 路径语言。它使用的一个非 XML 语法提供一种灵活地定位 XML (en-US) 文档的不同部分的方法。它同时也可以用于检测文档中某个节点是否与某个模式(pattern)匹配。

XPath 主要被用于 XSLT,也可用于定位文档元素,像类 XML 语言文档(如HTML 和 XUL ) 通过 DOM (en-US) 定位元素一样。替代 document.getElementById 方法、 内存中 XML 数据处理

使用 XML 架构

xml常用的元素定位方式:css选择器、  xpath

Xpath工具:火狐插件【try XPath】

路径定位方式

绝对路径:/setp/setp

相对路径:setp/setp

案例:/root/parent/my/child/son

step:轴名称::节点测试[谓语]


轴(axis相当于家族):定义所选节点与当前节点之间的树关系
节点测试(node-test):识别某个轴内部的节点
零个或者更多谓语(predicate):更深入地提炼所选的节点集

/:表示根目录 例如 # res=html.xpath('/html/body/*') # 找html下body下的所有标签(只找子,不找孙)

//:当前位置 例如# res=html.xpath('/html/body//*') # 找html下body下的所有标签(子子孙孙)

 

XPath 轴(axis)定位方式(类比族谱)

Xpath轴关键字 轴的定义说明 定位表达式实例 表达式解释
parent 父母 //img[@alt='div2-img2']/parent::div 查找到alt属性为div2-img2的img元素,并基于图片找到其上一级的div元素
child 子代 //div[@id='div1']/child::img 查找id为div1的div标签,基于当前div查找标签为img的子节点
ancestor 祖代,父亲和父亲的父亲,以此类推 //img[@alt='div2-img2']/ancestor::div 查找alt属性为div2-img2的图片,基于当前图片找到其上级的div页面元素
descendant 后代,儿子和他们孩子以此类推 //div[@id='div2']/descendant::img 查找id属性为div2的div元素,在查找其下级所有节点中的img元素
following 弟弟妹妹和他们的孩子 //div[@id='div1']/following::img 查找到ID属性为div1的div元素,并基于div的位置找到它后面节点中的img元素
following-sibling 弟弟妹妹 //img[@alt='div1-img1']/following-sibling::input 查找到alt属性为div1-img1的img页面元素,并基于img的位置找到后续节点中的input元素
preceding 哥哥姐姐和他们的孩子 //img[@alt='div2-img2']/preceding::div 查找到alt属性为div2-img2的图片页面元素,并基于图片的位置找到它前面节点中的div元素
preceding-sibling 哥哥姐姐 //img[@alt='div2-img2']/preceding-sibling::a[1] 查找到alt属性值为div2-img2的图片元素,基于图片位置找到它前面同级节点的第二个链接页面元素
C