какой селектор xpath получит эти цены и ничего больше? - PullRequest
1 голос
/ 24 января 2012

У меня есть следующие два элемента 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 ]

1 голос
/ 25 января 2012

В обоих случаях рассматриваемый текст является последним непустым потомком текстового узла. Вот как бы вы описали это на английском; как это сказать в XPath:

//td/descendant::text()[normalize-space()][last()]
0 голосов
/ 24 января 2012

Я не пробовал это, но мне кажется, что в данном конкретном случае,

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

может работать, потому что и текстовый узел, содержащий $65.00, и узел B, содержащий $127.20, являются последними из их родных элементов.

...