在XPath

时间:2016-01-04 14:50:20

标签: html xml xpath

我有一个节点如下:

<span class="portal-text-medium">Office Hours</span>

对于XPath我使用

//span[text()='Office Hours']

哪个应该有用,但它永远不会。我可以使用*contains(text(),'Office Hours')]*但是找不到完全匹配,我必须验证没有“*”。这不是它唯一不适合我的时间。我之前看到它有用,所以我不知道出了什么问题。有什么想法吗?

是的,我可以而且确实使用starts-with,但它并不完全相同。

2 个答案:

答案 0 :(得分:30)

XPath text() =与XPath . =

不同

(匹配的文本节点与匹配的字符串值不同)

以下XPath 相同......

  1. //span[text() = 'Office Hours']

    <强>说

    选择span元素 有一个立即孩子 text node 等于&#39;办公时间`。

  2. //span[. = 'Office Hours']

    <强>说

    选择 string value 等于的span元素到办公时间

  3. 简而言之,对于element nodes

      

    元素节点的string-value是该节点的串联   元素的所有文本节点string-valuedescendants个   文档顺序中的节点。

    实施例

    以下span元素 仅匹配#1

    • <span class="portal-text-medium">Office Hours<br/>8:00-10:00</span>
    • <span class="portal-text-medium">My<br/>Office Hours</span>

    以下span元素 仅匹配#2

    • <span class="portal-text-medium"><b>Office</b> Hours</span>
    • <span class="portal-text-medium"><b><i>Office Hours</i></b></span>

    以下span元素 将匹配#1和#2

    • <span class="portal-text-medium">Office Hours</span>

答案 1 :(得分:0)

使用 contains 和 AND 操作,这将帮助您找到确切的元素

//span[contains(@class, 'portal-text-medium') and text()='Office Hours']