xml – XPath中“//”和“/”之间的区别?
我在XPath上尝试使用
python-selenium.
我使用this link从教程中尝试了一些XPath: 所以我尝试了XPath的这两个变体. >这个表达 //webengagedata//preceding-sibling::* 返回14结果 >这个表达 //webengagedata/preceding-sibling::* 返回9结果 “//”与另外5个结果相匹配的是什么? 解决方法
/ vs //一般
子(/)和后代 – 或 – 自(//)都是axes in XPath. > /是/ child :: node()/的缩写. 使用/选择节点的直接子节点. 使用//来选择 / vs // with preceding-sibling :: * 您的具体问题询问了// ??previous-sibling :: *和/ preceding-sibling :: *之间的区别. 由于您的数据非现场且复杂,我们应考虑使用现有且更简单??的XML: <r> <a/> <b> <c/> <d/> </b> </r> 对于这个XML, > / r / preceding-sibling :: *什么都不选,因为r没有兄弟姐妹.> / r // preceding-sibling :: *选择前面的兄弟元素r的所有后代或自身节点.即,a,b,c和d.(请记住,/ r // preceding-sibling :: *是/ descendant-or-self :: node()/ preceding-sibling :: *的缩写,而不是/ descendant-or-self :: * / preceding-sibling: :*)请注意,即使b和d是没有元素的前任兄弟,它们也是文本节点的前任兄弟,因为上面的XML在b和d之后有空格.如果删除了空格,则只选择b和d.> / r / descendant :: * / preceding-sibling :: *选择r的所有后代元素的前一个兄弟元素.即a和c.请注意,未选择b和d,因为它们不是r的任何后代元素的兄弟元素之前 – 与前面的示例不同,文本节点不符合条件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |