2017-11-30 13 views
0

別の同じレベルノードの属性に基づいてノード属性を選択する方法はありますか?私が達成したいのは、属性class = "body-table-news-loss"を持つノードspanに続くすべてのノードからリンク(href値)を抽出することです。つまりセレクタは下の例でhttps://finance.yahoo.com/news/inspiremd-announces-planned-recapitalization-120000752.htmlを返します。 私は同じレベルのノード属性に基づいてXMLノードを選択しますか?

"//tr[td/span[@class='body-table-news-loss']]/a/@href" 

とその類似のバリエーションを試してみましたが、私は、XPathのセレクタに階層レベルを説明するために正確にどのように知っていないように私は望ましい結果を得ることはありません。ご協力いただき誠にありがとうございます。

<tr> 
<td>Nov-29-17 07:00AM&nbsp;&nbsp; 
</td> 
    <td align="left"> 
     <a href="https://finance.yahoo.com/news/inspiremd-announces-planned- 
     recapitalization-120000752.html">InspireMD Announces Planned 
     Recapitalization 
     </a> 
     <span class="body-table-news-loss">-51.29%</span> 
    </td> 
</tr> 
<tr> 
<td >Nov-07-17 04:05PM&nbsp;&nbsp; 
</td> 
    <td align="left"> 
     <a href="https://finance.yahoo.com/news/inspiremd-announces-third- 
     quarter-2017-210500523.html">InspireMD Announces Third Quarter 2017 
     Results; CGuard(TM) Revenue Increases 90% Versus Same Period Last Year 
     </a> 
     <span class="body-table-news-gain">+5.94%</span> 
    </td> 
</tr> 

答えて

1

preceding-sibling::軸を探しています。それは先行するコンテキストのすべての兄弟ノードを選択します。

何かこれはうまくいくはずです。

//tr/td/span[@class='body-table-news-loss']/preceding-sibling::a/data(@href) 
0

これは、同様に動作します:

//td[span[@class='body-table-news-loss']]/a/@href