什么xpath选择器将检索这两个价格,没有别的?

时间:2012-01-24 16:50:20

标签: xpath domdocument

我有以下两个td元素

<TD ALIGN="LEFT" VALIGN="top" WIDTH="150" STYLE="font-size: 11px; font-family: arial" HEIGHT="65"> <a href="http://www.site.com/page/IDLM/PROD/10001512"><B><i>Brand </i></B><BR>Title</a><BR>
$65.00
 </TD>
 <TD ALIGN="LEFT" VALIGN="top" WIDTH="35">&nbsp;</TD><TD ALIGN="LEFT" VALIGN="top" WIDTH="150" STYLE="font-size: 11px; font-family: arial" HEIGHT="65"> <a href="http://www.site.com/page/IDLM/PROD/10001511"><B><i>Brand </i></B><BR>Title</a><BR>
<span style="color: #999999; font-weight: normal;"><strike>$212.00</strike></span>&nbsp;&nbsp;<B>$127.20</B>
 </TD>

我想从两者中检索最终价格($ 65.00和$ 127.20)。我可以用

//td/br[last()]/following-sibling::text()[1]|//td/br[last()]/following-sibling::b[1]

返回

    [0] => 
$65.00

    [1] => Â Â 
    [2] => $127.20

其中[1]是第二个价格之前的&nbsp;&nbsp;。是否有一个只检索

的xpath
    [0] => 
$65.00
    [1] => $127.20

2 个答案:

答案 0 :(得分:1)

在这两种情况下,所讨论的文本都是最终的非空文本节点后代。这就是你用英语描述它的方式;这是如何在XPath中说出来的:

//td/descendant::text()[normalize-space()][last()]

答案 1 :(得分:0)

我没试过这个,但在我看来,在这个特殊情况下,

//td/br[last()]/following-sibling::*[last()]

可能有效,因为包含$65.00的文本节点和包含B的{​​{1}}节点都是他们兄弟姐妹中的最后一个。