我想检查一些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>
有可能吗?
答案 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>