使用XPATH检查HTML结构,任何节点数

时间:2011-10-22 23:59:39

标签: xpath

我想检查一些html标记的结构,只检查结构。 例如,我需要检查<list-item-canvas>标记中的SOMEWHERE是否为&lt; image name='category-pic'>标记。

我写道:

//div[@class='list-item-canvas'][1]/*/img[@name='category-pic']

如果<img>是层次结构中任何('*')节点之后的第二个节点, BUT ,如果我在结构的深处某处有<img>,则该工作正常,和我不想关心关卡层次结构我应该如何编写我的xpath-query?我认为相反'*'我可以写'**',但我不能...... {/ p>

有可能吗?

2 个答案:

答案 0 :(得分:2)

这样做:

//div[@class='list-item-canvas'][1]//img[@name='category-pic']

//之前的img可让您找到div img的任何后代,而不仅仅是div的子孙。

您确定要[1]吗?它可能不是你想的那样。

答案 1 :(得分:2)

使用

(//div[@class='list-item-canvas'])[1]//img[@name='category-pic']

这将选择img属性为name的字符串值的任何'category-pic',并且是第一个(文档顺序)div的后代字符串值其class属性为'list-item-canvas'

请注意子表达式周围的支撑

(//div[@class='list-item-canvas'])[1]

这与以下内容截然不同:

 //div[@class='list-item-canvas'][1]

后者选择文档中的每个 div元素,该元素是其父级的第一个div子元素 - 并且可能存在多个此类元素。< / p>