使用XPath通过相邻标签查找元素

时间:2012-01-18 00:26:44

标签: html xml xpath

我无法弄清楚以下的XPATH。还有其他几个具有相似属性的元素(包括ID,但它不是我的页面),并且确保选择正确元素的唯一方法是通过其相邻标签“版权”获取它。这是HTML:

<div class="row">
    <div class="label">Copyright :</div>
    <div id="container-id" class="field" >2011 Homeland Ent</div>
</div>
<div class="row">
    <div class="label">Another Label :</div>
    <div id="container-id" class="field" >Another Entry</div>
</div>

请注意,由于格式错误的HTML,//*[@id="container-id"]在这里还不够。获取文本“2011 Homeland Ent”的正确XPATH是什么?

3 个答案:

答案 0 :(得分:3)

也许这样的事情(我不确定“版权”文本是否是搜索的一部分,无论如何都包含它

//*[@class="label" and starts-with(., "Copyright")]/following-sibling::*[@id="container-id"]

答案 1 :(得分:2)

看起来每个row包含一个label / field对。如果这是真的,则可以使用更短,更简单的表达式(不需要following-sibling):

//*[div[@class='label' and starts-with(., 'Copyright')]]/div[@id='container-id']

答案 2 :(得分:0)

使用此xpath,它将起作用

//div[text()="Copyright :"]/parent::node()/div[@id="container-id"]/text()