2016-03-23 8 views
2

"I want to get this text snippet"以下のテキストを取得するxpathを書き込もうとしています。xPath:親ノードから、条件に合致する子サブサブ子ノードに下降するか?

  1. //h2["Issuer"]/parent::div/parent::div/following-sibling::div<div class="table-responsive">に私たちを取ります。現時点では、この行には2つの部分があります

    //h2["Issuer"]/parent::div/parent::div/following-sibling::div//td["Name"]/following-sibling::td/text() 
    

    <root> 
        <div class="box"> 
        <div class="col-lg-12"> 
         <h2>Issuer</h2> 
        </div> 
        </div> 
        <div class="table-responsive"> 
        <table class="table"> 
         <tbody> 
         <tr> 
          <td> Name </td> 
          <td class="text-right"> I want to get this text snippet </td> 
         </tr> 
         </tbody> 
        </table> 
        </div> 
    </root> 
    

    これまでのところ、私はこれを持っています。

  2. //td["Name"]/following-sibling::td/text()ブロック<td>のテキストスニペットのターゲットになります。

実際のウェブページのソースコードには複数の場所があり、<td> Name </td>があるため、両方の部分が重要です。したがって、最初の部分は全体的な構造のどこで見始めるかを決定します。

私の使用は//で、2番目の部分は条件に一致する子ノードに降りる正しい方法です。私は一致を見つけることができないので、これを尋ねます。

+1

あなたは '「名前」にスペースが'関係ありませんか? –

+1

アレクセの答えは、XPath式の中で、その時点で*降下する*(ルートから始まらない)*に適用できるコンセプトと組み合わせて、あなたの質問に答えるだけで十分です。あなたはまだ開いている問題がありますか? – kjhughes

+0

@kjhughesありがとう、それは問題を解決する!私のスクリプトはまだ動作していないので、答えをまだ受け入れていませんでした。それによって答えを確認する方法がありませんでした。しかし、前提が明確になっているので、答えを受け入れてデバッグを続けることができます。 – Winterflags

答えて

2

あなただけのテキストチェックを追加、ほとんど正しいです:

//td[normalize-space(.) = "Name"]/following-sibling::td[1]/text() 
関連する問題